gpt4 book ai didi

homebrew - 如何仅使用脚本创建 Homebrew 程序公式

转载 作者:行者123 更新时间:2023-12-04 11:43:14 27 4
gpt4 key购买 nike

我想将一些 shell 脚本 + 支持文件打包成一个 Homebrew 公式,将这些脚本安装在用户的某处 $PATH .我将从我自己的水龙头中提供配方。

通读formula cookbook这些示例似乎假设上游库中的 cmake 或 autotools 系统。如果我的项目只包含几个脚本和配置文件怎么办?我应该手动将它们复制到 #{prefix}/ 中吗?在公式?

最佳答案

这里有两种情况:
独立脚本
将它们安装在 bin 下使用 bin.install .您可以选择重命名它们,例如去除扩展名:

class MyFormula < Formula
# ...

def install
# move 'myscript.sh' under #{prefix}/bin/
bin.install "myscript.sh"

# OR move 'myscript.sh' to #{prefix}/bin/mybettername
bin.install "myscript.sh" => "mybettername"

# OR move *.sh under bin/
bin.install Dir["*.sh"]
end
end
带有支持文件的脚本
这种情况很棘手,因为您需要让所有路径都正确。最简单的方法是在 #{libexec}/下安装所有东西。然后写 exec #{bin}/ 下的脚本.这是 Homebrew 公式中非常常见的模式。
class MyFormula < Formula
# ...

def install
# Move everything under #{libexec}/
libexec.install Dir["*"]

# Then write executables under #{bin}/
bin.write_exec_script (libexec/"myscript.sh")
end
end
给定包含以下内容的 tarball(或 git repo):
  • script.sh
  • supportfile.txt

  • 上面的公式将创建以下层次结构:
    #{prefix}/
    libexec/
    script.sh
    supportfile.txt
    bin/
    script.sh
    Homebrew 创建了 #{prefix}/bin/script.sh具有以下内容:
    #!/bin/bash
    exec "#{libexec}/script.sh" "$@"
    这意味着您的脚本可以期望在其自己的目录中有一个支持文件,同时不会污染 bin/并且不对安装路径做任何假设(例如,您不需要在脚本中使用 ../libexec/supportfile.txt 之类的东西)。
    this answer of mine以 Ruby 脚本和 that one 为例以联机帮助页为例。
    注意 Homebrew 也有其他帮助程序,例如不仅写了 exec脚本还要 set environment variablesexecute a .jar .

    关于homebrew - 如何仅使用脚本创建 Homebrew 程序公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46478540/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com