Homebrew 在运行 make 移动二进制文件时抛出错误

Homebrew 在运行 make 移动二进制文件时抛出错误

我正在尝试编写一个自制程序的公式来安装我制作的 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

答案1

你没有做正确的事情。一个公式是禁止的直接安装二进制文件或其他任何东西/usr/local/bin

作为一个公式,它应该将其所有内容安装到类似 的路径中/usr/local/Celler/<formula-name>/<version>,该路径称为路径,在 ruby​​ 中prefix表示为。 #{prefix}Homebrew 会将bin/其下子文件夹中的二进制文件符号链接#{prefix}/usr/local/bin.

ruby 中的变量#{prefix}由 Homebrew 自动计算,遵循我上面提到的模式。

prefix您应该做的就是在编译和构建之前告诉配置文件这一点。

class Wget < Formula
  homepage "https://www.gnu.org/software/wget/"
  url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz"
  sha256 "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd"

  def install
    system "./configure", "--prefix=#{prefix}"
    system "make", "install"
  end
end

在编写自己的公式之前,请阅读开发人员文档和一些现有的公式代码。

相关内容