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

1

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?

    
por Prahlad Yeri 24.06.2014 / 20:29

2 respostas

2

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.

    
por 24.06.2014 / 20:36
1

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.

    
por 24.06.2014 / 21:11