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.