如何使用 Homebrew 安装整个目录的文件?

wca*_*art 4 installation homebrew

我正在使用 Homebrew 安装脚本,这取决于与脚本位于同一目录中的资源目录。例如:

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 directory/\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 script.sh\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何创建一个script.sh安装 Homebrew 的目录?我尝试过我的公式:

\n\n
class Script < Formula\n  ...\n  def install\n    bin.install "script.sh"\n    bin.install "directory/"\n  end\nend\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题是 和script.shdirectory/安装到/usr/local/Cellar/script/,但仅script.sh安装到/usr/local/bin/

\n\n

我也尝试过替换bin.install "directory/bin.install Dir["directory/"],但没有解决问题。

\n\n

我如何才能从我的公式中script.sh看到directory/,它位于 中/usr/local/Cellar/script/directory/?我可以/usr/local/bin在公式中进行符号链接吗?

\n

bfo*_*ine 7

这是 Homebrew 公式中的常见模式。解决方案不是将目录安装在 下bin/,因为该目录应该只包含可执行文件,而是将脚本和目录安装在某个位置,然后在其中创建一个包装器,bin/从该位置调用脚本。

  1. 安装以下所有内容libexec

     libexec.install Dir["*"]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编写一个包装器bin

     bin.write_exec_script libexec/"script.sh"
    
    Run Code Online (Sandbox Code Playgroud)

完整公式:

class Myformula < Formula
  desc "..."
  homepage "..."
  url "..."
  sha256 "..."
  
  def install
    libexec.install Dir["*"]
    bin.write_exec_script libexec/"script.sh"
  end
end
Run Code Online (Sandbox Code Playgroud)