我想将一些 shell 脚本 + 支持文件打包成一个 homebrew 公式,将这些脚本安装在用户的某处$PATH。我将从我自己的水龙头中提供配方。
通读公式食谱,这些示例似乎假设上游库中的 cmake 或 autotools 系统。如果我的项目只包含几个脚本和配置文件怎么办?我应该手动将它们复制到#{prefix}/公式中吗?
这里有两种情况:
在binusing下安装它们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
Run Code Online (Sandbox Code Playgroud)
这种情况很棘手,因为您需要让所有路径都正确。最简单的方法是在安装的一切#{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
Run Code Online (Sandbox Code Playgroud)
给定包含以下内容的 tarball(或 git repo):
script.shsupportfile.txt上面的公式将创建以下层次结构:
#{prefix}/
libexec/
script.sh
supportfile.txt
bin/
script.sh
Run Code Online (Sandbox Code Playgroud)
Homebrew#{prefix}/bin/script.sh使用以下内容创建它:
#{prefix}/
libexec/
script.sh
supportfile.txt
bin/
script.sh
Run Code Online (Sandbox Code Playgroud)
这意味着您的脚本可以期望在其自己的目录中有一个支持文件,同时不会污染bin/ 并且不对安装路径做出任何假设(例如,您不需要../libexec/supportfile.txt在脚本中使用类似的东西)。
见我的这个答案与Ruby脚本和一个例子是一个用于联机手册的例子。
注意 Homebrew 还有其他帮助程序,例如不仅可以编写exec脚本,还可以设置环境变量或执行.jar.
| 归档时间: |
|
| 查看次数: |
1134 次 |
| 最近记录: |