제가 만든 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
자신만의 수식을 작성하기 전에 개발자 문서와 일부 기존 수식 코드를 읽어보세요.