私が作成したC ++ツールをインストールするためにホームブルーム公式を作成しようとしています。binaryFile
ファイルをコピーするメイクファイルには、次の規則があります/usr/local/bin
。
install:
@install -m 0755 binaryFile /usr/local/bin
実行すると、.dllファイルに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
。これはすでに私がやっていることです。ホームブレークを実行するときにmake installが手動で実行したときとは異なる動作をする理由を理解できません。
私が経験している正確な問題を確認するには、次の手順に従ってください。
brew tap k-vernooy/tap
brew install terminalgol
答え1
あなたは正しいことをしませんでした。一つの式は禁止バイナリを直接インストールするか、他のものをインストールしてください/usr/local/bin
。
正式には、すべてのコンテンツを同様のパス(/usr/local/Celler/<formula-name>/<version>
ルビーで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
独自の数式を作成する前に、開発者ドキュメントといくつかの既存の数式コードをお読みください。