바이너리를 이동하기 위해 make를 실행할 때 Homebrew에서 오류가 발생합니다.

바이너리를 이동하기 위해 make를 실행할 때 Homebrew에서 오류가 발생합니다.

제가 만든 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

자신만의 수식을 작성하기 전에 개발자 문서와 일부 기존 수식 코드를 읽어보세요.

관련 정보