Por que os programas personalizados são sempre instalados em /opt, /srv, /usr/local, etc. e não na pasta ~/ (home)?

Por que os programas personalizados são sempre instalados em /opt, /srv, /usr/local, etc. e não na pasta ~/ (home)?

O repositório LTS é muito bom, mas por algum motivo prefiro o método "construir a partir do código-fonte" para alguns programas. Um dos motivos é que obtenho a versão preferida (o PHP no LTS está na 5.3, enquanto posso compilar a 5.4 a partir do código-fonte). Semelhante é o caso de nginx, node.js, etc.

Agora eu gostaria de saber por que todos os tutoriais insistem em instalar os programas nas pastas "de propriedade do root", como /opt, /srv, ou /usr/local. Acho muito mais fácil instalá-lo na minha pasta pessoal, como: /home/prahlad/programas/PHP-5.4

Uma vantagem é que não preciso usar sudopara instalar esses programas. A segunda e uma vantagem relacionada ésegurançapreocupação. E se (suponhamos) que alguma dessas fontes contenha malware (embora menos provável no Linux)? Negar-lhes o privilégio de root não é uma boa coisa a fazer?

Gostaria de saber um exemplo em que é necessário que um programa seja instalado em uma pasta de propriedade do root?

Responder1

Os guias dizem para você instalar em /usr/local/ou /optetc para que outros possam usá-los.

Se você instalar em seu diretório inicial, somente você terá acesso a eles. Se você está apenas compilando para si mesmo, tudo bem.

Responder2

Esta não é uma regra rígida e rápida, mas o padrão /opté geralmente independente e pode exigir que você copie ou vincule executáveis ​​​​em um caminho executável ou adicione uma pasta interna ao arquivo $PATH. Isso é simples o suficiente para descobrir se você prefere colocá-lo em outro lugar e usar um arquivo $HOME/bin.

O material criado pela fonte cujo padrão é /usr/local, no entanto, também pode instalar bibliotecas compartilhadas e páginas de manual. Se você quiser colocá-la em outro lugar, normalmente você primeiro exporta a PREFIXvariável (ou a fornece na linha de comando com make); ./configure --helppode confirmar e explicar isso.

Nesse caso, você precisa de um pouco de hierarquia de diretórios no caminho que deseja usar. Deveria ser assim:

bin/
lib/
include/
share/
    man/
        man1/

Existem outros manXdiretórios que você pode criar (dê uma olhada /usr/share/manem um modelo), embora os instaladorespoderiacrie-os se eles não existirem. Você desejará o seguinte, por exemplo ~/.profile:

export PATH=~/bin:$PATH
export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH
export MANPATH=~/share/man:$MANPATH

Se o pacote usar bibliotecas compartilhadas, isso LD_LIBRARY_PATHserá crucial ou os executáveis ​​não poderão ser vinculados a elas. MANPATHpode não funcionar em todos os sistemas e, de qualquer forma, não é estritamente necessário - se man foobarfalhar, você provavelmente saberá onde procurá-lo.

informação relacionada