Prática recomendada: Onde instalar pacotes Linux

0

Onde é o melhor caminho para instalar todos os arquivos do pacote ao compilar?

Por exemplo - eu quero instalar o ProFTPd, então há uma opção

--prefix=/usr/local/proftpd

, o que significa que todos os arquivos após a compilação (incluindo arquivos binários e de configuração) serão armazenados aqui. Como você sabe, todos os pacotes, que são instalados via sistema de pacotes (como zypper no SuSE ou apt no Ubuntu) geralmente armazenam seus arquivos de configuração em / etc / e arquivos binários em / sbin / e também armazenam um link no meu $ PATH, então eu posso rodar apenas digitando proftpd (sem / sbin).

A enorme vantagem dos pacotes instalados via sistema de pacotes, eu acho, é o processo de desinstalação fácil. Eu gostaria de poder desinstalar pacotes compilados também fácil.

Acho que posso criar alguns arquivos de lote, que poderei usar assim:

uninstall --package=proftpd

E meu script encontrará todos os arquivos proftpd em caminhos usuais (/ etc, / sbin) e os removerá usando rm.

Existe alguma prática recomendada, onde armazenar todos esses arquivos, ou existem (des) vantagens do meu primeiro exemplo (--prefix = / usr / local / proftpd)?

Eu realmente não acho que seja legal ter 2 caminhos com arquivos de configuração e arquivos binários, mas talvez eu esteja interpretando mal os princípios básicos do Linux ...: -)

    
por Radek Simko 19.06.2010 / 12:13

4 respostas

9

Padrão de hierarquia do sistema de arquivos

A distro recebe /usr , você recebe /usr/local , os ISVs recebem /opt .

    
por 19.06.2010 / 12:16
4

Os melhores locais para instalar pacotes na sua máquina são /usr/local se você tiver direitos de administrador e quiser que todos usem seu programa, ou $HOME se você quiser apenas fazer uma cópia para si mesmo.

Normalmente, você define o prefixo como --prefix=/usr/local para que os arquivos do aplicativo sejam armazenados em /usr/local/bin configurações em /usr/local/etc e assim por diante.

A vantagem de usar esses locais padrão é ... bem, basicamente, que eles são padrão. As pessoas sabem onde procurar os arquivos. Por exemplo, /usr/local/bin está quase sempre em todo mundo $PATH , então você não precisará mexer na variável $PATH para fazer com que as pessoas o executem. Da mesma forma, as bibliotecas são encontradas verificando $LD_LIBRARY_PATH , mas /usr/local/lib geralmente é marcado por padrão, portanto, você não precisa adicioná-lo manualmente e assim por diante.

Sobre a desinstalação: Depois de executar e configurar o programa, make install irá instalá-lo para você e make uninstall removerá os arquivos automaticamente.

    
por 19.06.2010 / 15:01
3

Na verdade, a melhor abordagem é provavelmente criar um pacote que você possa instalar.

Muitos aplicativos vêm com os arquivos necessários para criar pacotes RPM ou DEB. Se não o fizerem, existem ferramentas para criar pacotes automaticamente, por exemplo, checkinstall .

checkinstall monitorará as operações de make install e redirecionará os arquivos instalados para criar um pacote DEB ou RPM a partir deles. Dessa forma, você obtém um pacote regular integrado aos seus outros pacotes.

Existem algumas ressalvas (você não obterá dependências e alguns scripts de instalação muito complicados poderão falhar), mas normalmente funciona muito bem.

    
por 19.06.2010 / 16:21
0

A melhor prática é seguir a Base Padrão do Linux , especialmente as padrão de hierarquia do sistema de arquivos .

    
por 19.06.2010 / 16:23