Homebrew:点击创建,在安装过程中移动包文件

Homebrew: tap creation, move package files during installation

我正在尝试弄清楚如何(如果可能的话)告诉 brew,当 x 人安装我的包时,它必须将一些文件放在一个文件夹中,而另一些放在其他文件夹中。 例如,您通常将 /etc/ 文件夹用于配置文件:假设我有项目“project”,如

  • file1.py
  • file2.js
  • file3.blablabla
  • configfile.conf

我希望当有人启动 brew install project 时,文件 1、2 和 3 被放入默认的 brew 文件夹,而 configfile.conf 被移动到 /etc/project/。我已经看到很多包在安装过程中移动文件,但是 brew 的文档没有涵盖这种情况,并且在 google 上查找它只会导致人们询问如何移动 homebrew 安装文件夹。

这可能吗,还是我必须将整个项目组织在同一个文件夹中?

我终于找到了答案,它在文档中没有很好地解释,但在那里: Here are the docs

答案在“只是移动一些文件”部分: 在您的 .rb 脚本中,您具有 def install 函数。如果您查看文档,有一个 table 包含很多目录

prefix      #{HOMEBREW_PREFIX}/Cellar/#{name}/#{version}    /usr/local/Cellar/foo/0.1
opt_prefix  #{HOMEBREW_PREFIX}/opt/#{name}             /usr/local/opt/foo
bin         #{prefix}/bin                  /usr/local/Cellar/foo/0.1/bin
etc...

这些是您可以安装文件的目录。 例如,我必须将我的脚本移动到 bin 文件夹中,并将配置文件移动到 etc 文件夹中,所以我写了

def install
    etc.install "config"  # move file "config" to etc directory
    bin.install "script"  # move file "script" to bin directory
end

N.B.: etc 和 bin 不是 /etc//bin/,而是 brew 文档中指定的那些。在这种情况下 #{HOMEBREW_PREFIX}/etc#{prefix}/bin 其中 HOMEBREW_PREFIX 是 /usr/local 并且前缀是 brew 的安装文件夹。