Os guias recomendam que você instale em /usr/local/
ou /opt
etc para que outros possam usá-los.
Se você instalar em seu diretório pessoal, somente você terá acesso a eles. Se você está apenas compilando para si mesmo, então está tudo bem.
O repositório LTS é muito bom, mas por alguma razão eu prefiro o método "build from source" para alguns programas. Uma razão é que eu recebo a versão preferida (PHP em LTS está em 5.3, enquanto eu posso compilar 5.4 a partir da fonte). Semelhante é o caso de nginx
, node.js
, etc.
Agora, gostaria de saber por que todos os tutoriais insistem em instalar os programas nas pastas "de propriedade da raiz", como /opt
, /srv
ou /usr/local
. Eu acho muito mais fácil instalá-lo na minha pasta pessoal, como:
/home/prahlad/programs/PHP-5.4
Uma vantagem é que não preciso usar sudo
para instalar esses programas. Em segundo lugar e uma vantagem relacionada é preocupação segurança . E se (suponha) que alguma dessas fontes contenha malware (embora menos provável no linux)? Não está negando-lhes privilégio de raiz uma coisa boa a fazer?
Gostaria de saber um exemplo em que é necessário que um programa seja instalado em uma pasta de propriedade da raiz?
Os guias recomendam que você instale em /usr/local/
ou /opt
etc para que outros possam usá-los.
Se você instalar em seu diretório pessoal, somente você terá acesso a eles. Se você está apenas compilando para si mesmo, então está tudo bem.
Esta não é uma regra difícil e rápida, mas o padrão que normalmente é /opt
é autocontido e pode exigir que você copie ou vincule executáveis em um caminho executável ou adicione uma pasta interna a $PATH
. Isso é simples o suficiente para descobrir se você prefere colocá-lo em outro lugar e usar um $HOME/bin
.
O material criado na origem que padroniza para /usr/local
, no entanto, também pode estar instalando bibliotecas compartilhadas e páginas man. Se você quiser colocá-lo em outro lugar, geralmente você exporta primeiro a variável PREFIX
(ou fornece-a na linha de comando com make
); ./configure --help
pode confirmar e explicar isso.
Nesse caso, você precisa de um pouco de hierarquia de diretórios no caminho que deseja usar. Deveria se parecer com:
bin/
lib/
include/
share/
man/
man1/
Existem mais diretórios manX
que você pode criar (dê uma olhada em /usr/share/man
para um modelo), embora os instaladores possam criá-los se eles não existirem. Você desejará o seguinte em, por exemplo, ~/.profile
:
export PATH=~/bin:$PATH
export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH
export MANPATH=~/share/man:$MANPATH
Se o pacote usa bibliotecas compartilhadas, o LD_LIBRARY_PATH
é crucial ou os executáveis não poderão se vincular a eles. MANPATH
pode não funcionar em todos os sistemas e não é estritamente necessário - se man foobar
falhar, você provavelmente saberá onde procurá-lo.