Eu uso servidores Linux há anos e continuo sendo confundido pelo padrão de hierarquia de sistemas de arquivos. Normalmente, eu posso viver com a confusão. Mas agora que estou desenvolvendo meu próprio software para Linux, preciso entender onde ele deve ser instalado pelos gerenciadores de pacotes.
Eu estava bastante convencido de que / opt era o local perfeito para minha aplicação. Mas depois de investigar meu sistema de arquivos Debian, não tenho mais certeza: muitos softwares estão realmente instalados em / usr / lib! Para citar alguns: MySQL, MySQLWorkbench, Nautilus, Rythmbox ...
De acordo com o FHS, o / usr / lib deve conter "Bibliotecas para programação e pacotes" e "inclui arquivos de objetos, bibliotecas e binários internos que não devem ser executados diretamente por usuários ou scripts de shell" ( Veja aqui ).
Muitos softwares localizados em / usr / lib do meu servidor debian não são bibliotecas ou binários internos, mas softwares executáveis por usuário!
Ainda estou no caminho certo para ter meu aplicativo instalado em / opt. Mas eu realmente gostaria de entender se isso está correto e, acima de tudo, por quê .
Agradecemos antecipadamente por seus conselhos,
Eric.
Respostas:
A chave real para entender o Padrão de Hierarquia do Sistema de Arquivos é saber que ele foi projetado com sistemas de arquivos de rede em mente.
Para todas as máquinas do mesmo sistema operacional, versão e arquitetura, você pode compartilhar / usr via NFS e montá-lo.
/ usr é (re) montado depois que a pilha de rede é inicializada.
fonte
A diferença é que ele
/usr
deve conter os pacotes instalados como parte do sistema . Pacotes que você obtém dos repositórios Debian / Ubuntu, PPAs, etc., acesse aqui. While/opt
é destinado a aplicativos de terceiros desagrupados que não são distribuídos pelo processo de distribuição de pacotes da distribuição.Se você distribuir pacotes .deb ou .rpm, com o objetivo de eventualmente incluir seu software nos repositórios oficiais, você deve instalar o
/usr
. Caso contrário, instale em/opt
. Em qualquer um dos casos, seu aplicativo deve ser compilado para ser executado em qualquer local arbitrário (por exemplo, com a ajuda das ferramentas automáticas do GNU).fonte
/usr/local
não estava no escopo desta pergunta. Mas é para softwares de terceiros que o administrador local compila e instala.Você instala suas bibliotecas
<prefix>/lib
, binários<prefix>/bin
, arquivos de cabeçalho<prefix>/include
, páginas de manualprefix/[share/]man
, arquivos pkgconfig<prefix>/lib/pkgconfig
ou<prefix/share/pkgconfig
arquivos cmake .m4 em<prefix>/share/aclocal
Então deixe o gerenciador de pacotes decidir o prefixo. Se você estiver distribuindo rpm's / deb's,
/usr
é uma boa opção para um prefixo../configure --prefix=~/.local/
Ainda deve funcionar, portanto, não codifique seu caminho em nenhum lugar, por favor!Algumas bibliotecas são agrupadas em outra ferramenta que as torna também executáveis e utilizáveis como uma biblioteca, mas elas ainda são bibliotecas, e não no seu $ PATH, portanto, não há problema em colocá-las em / lib, eu acho.
fonte
Sugiro evitar a instalação do seu aplicativo em / opt. Razão 1: algumas distribuições não possuem / opt por padrão Razão 2: / usr / lib é um caminho padrão para bibliotecas {Se outros aplicativos precisarem usar sua biblioteca, você deverá adicionar seu caminho manualmente a / etc / ldconfig} / opt é mais conveniente quando você tem aplicativos independentes instalados manualmente e deseja saber onde eles estão localizados
Um dos motivos pelos quais executáveis completos estão localizados em / usr / lib pode ser que eles sejam usados em outros scripts. {Por exemplo, os scripts do bash não podem usar uma API diretamente. por esse motivo, um truque comum é criar um "wrapper" em torno dessa API e enviar parâmetros como argumentos do script}
fonte
Por favor, instale-o em / opt.
O número excessivo de aplicativos Linux faz o mesmo que os desenvolvedores do Windows criaram nos anos 90.
Vamos instalar nosso material em C: \ windows para que seja simples e fácil de encontrar (e um pouco mais rápido). Depois vieram 15 anos de DLL, já que diferentes pacotes de software precisavam de versões diferentes das mesmas bibliotecas (que no Windows não tinham versões das bibliotecas).
A menos que você esteja escrevendo o software real do sistema, coloque-o em / opt, para que as pessoas possam rastrear melhor quem instalou o quê.
fonte