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.?
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.?
Respostas:
Depende do pacote. Se o Makefile é gerado pelo GNU autotools ( ./configure
), você pode definir o local de destino da seguinte maneira:
./configure --prefix=/somewhere/else/than/usr/local
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.
make && make install
seguir a cláusula de configuração?
--prefix
é que, se você executar um strings
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:
export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
make DESTDIR=./new/customized/path install
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 //
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:
make prefix=<myinstalldir>
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.
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:
perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install
* explicação adicional: https://www.perlmonks.org/?node_id=564720
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.
PREFIX ?= "installation path"
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.
--prefix
opção é a ./configure
que você chama ANTES make
.
tente usar INSTALL_ROOT.
make install INSTALL_ROOT=$INSTALL_DIRECTORY