Estou tentando escrever uma fórmula para homebrew instalar uma ferramenta C++ que fiz. Eu tenho a seguinte regra no meu makefile para copiar binaryFile
o arquivo /usr/local/bin
:
install:
@install -m 0755 binaryFile /usr/local/bin
Quando eu executo make install
, ele copia corretamente binaryFile
para /usr/local/bin
.
No entanto, quando eu brew install
o pacote, ele dá o seguinte erro ao executar o make install
:
install: /usr/local/bin/binaryFile: Operation not permitted
make: *** [install] Error 71
Eu fiz algumas leituras e a maioria dos lugares diz que, quando dado esse erro, use /usr/local/bin/
em vez de /usr/bin
- que é o que já estou fazendo. Eu não entendo por que quando o homebrew executa o make install ele se comporta de maneira diferente do que quando eu o executo manualmente.
Para ver o problema exato que estou tendo:
brew tap k-vernooy/tap
brew install terminalgol
Você não está fazendo as coisas direito. Uma fórmula é proibida de instalar binários, ou o que quer que seja,
/usr/local/bin
diretamente.Como fórmula, ele deve instalar todo o seu conteúdo em um caminho como
/usr/local/Celler/<formula-name>/<version>
, que é chamado deprefix
caminho e representado por#{prefix}
em ruby. O Homebrew fará um link simbólico do binário da subpastabin/
sob isso#{prefix}
para o/usr/local/bin
.A
#{prefix}
variável do ruby é calculada pelo Homebrew automaticamente, seguindo o padrão que mencionei acima.Tudo o que você deve fazer é dizer isso ao arquivo configure
prefix
antes de compilar e construir.Leia as documentações do desenvolvedor e alguns códigos de fórmulas existentes antes de escrever suas próprias fórmulas.