Eu quero executar 'make install' para ter tudo o que preciso, mas eu gostaria que ele instalasse as coisas em sua própria pasta, em oposição ao / usr / bin etc. do sistema, é possível? mesmo que faça referência a ferramentas no / usr / bin etc.?
148
Respostas:
Depende do pacote. Se o Makefile é gerado pelo GNU autotools (
./configure
), você pode definir o local de destino da seguinte maneira:Se o Makefile não for gerado por ferramentas automáticas, mas distribuído junto com o software, basta abri-lo em um editor e alterá-lo. O diretório de destino da instalação provavelmente está definido em uma variável em algum lugar.
fonte
make && make install
seguir a cláusula de configuração?--prefix
é que, se você executar umstrings
no binário resultante posteriormente, verá que o caminho é armazenado dentro. Não sei por que isso aconteceu, mas certamente não quero os caminhos da minha máquina nos binários enviados para outros usuários.Como não sabe qual versão do automake, você pode usar a variável de ambiente DESTDIR .
Veja Makefile para ter certeza.
Por exemplo:
fonte
Este comando rápido funcionou para mim na instalação do opencv release 3.2.0 no Ubuntu 16. O caminho DESTDIR pode ser relativo e absoluto.
Esse redirecionamento também pode ser útil caso o usuário não tenha privilégios de administrador, desde que a localização do DESTDIR tenha acesso correto para o usuário. por exemplo, / home //
fonte
Pode ser dependente do que é suportado pelo módulo que você está tentando compilar. Se seu makefile é gerado usando ferramentas automáticas, use:
--prefix=<myinstalldir>
ao executar o ./configure
alguns pacotes permitem que você também substitua ao executar:
no entanto, se você não estiver usando ./configure, a única maneira de saber com certeza é abrir o makefile e verificar. Deve ser uma das primeiras variáveis no topo.
fonte
make prefix=...
pode resultar em binários com caminhos embutidos erradas, uma vez que aqueles normalmente não pode ser modificado depois./configure --prefix=...
Se o pacote fornecer um
Makefile.PL
- pode-se usar:* explicação adicional: https://www.perlmonks.org/?node_id=564720
fonte
Eu tentei as soluções acima. Nenhum funcionou.
No final, abri o arquivo Makefile e alterei manualmente o caminho do prefixo para o caminho de instalação desejado, como abaixo.
Quando tentei --prefix, "make" reclamou que não existe tal entrada de comando. No entanto, talvez alguns pacotes aceitem --prefix, que é obviamente uma solução mais limpa.
fonte
--prefix
opção é a./configure
que você chama ANTESmake
.tente usar INSTALL_ROOT.
fonte