我正在尝试为自制软件编写一个公式来安装我制作的 C++ 工具。我的makefile中有以下规则将binaryFile
文件复制到/usr/local/bin
:
install:
@install -m 0755 binaryFile /usr/local/bin
当我运行时make install
,它会正确复制binaryFile
到/usr/local/bin
.
但是,当我brew install
打包时,运行时会出现以下错误make install
:
install: /usr/local/bin/binaryFile: Operation not permitted
make: *** [install] Error 71
我已经阅读了一些资料,大多数地方都说,当出现这个错误时,使用/usr/local/bin/
而不是/usr/bin
- 这是我已经在做的。我不明白为什么当 homebrew 运行 make install 时,它的行为与我手动运行它时不同。
要查看我遇到的确切问题:
brew tap k-vernooy/tap
brew install terminalgol
你做事不对。禁止将二进制文件或其他任何内容直接安装到公式中
/usr/local/bin
。作为一个公式,它应该将其所有内容安装到一个类似的路径
/usr/local/Celler/<formula-name>/<version>
中,该路径称为prefix
路径,#{prefix}
在 ruby 中由表示。Homebrew 会将二进制文件从bin/
这个下的子文件夹符号链接#{prefix}
到/usr/local/bin
.来自 ruby 的
#{prefix}
变量由 Homebrew 自动计算,遵循我上面提到的模式。prefix
您应该做的就是在编译和构建之前告诉配置文件。在编写自己的公式之前,请阅读开发人员文档和一些现有的公式代码。