Por que o software se instala em / usr / lib?

11

Eu uso servidores Linux há anos e fico confuso com o Filesystem Hierarchy Standard. Normalmente, 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 o meu aplicativo. Mas depois de ter investigado meu sistema de arquivos Debian, eu não tenho mais certeza: muitos softwares são realmente instalados em / usr / lib! Para citar alguns: MySQL, MySQLWorkbench, Nautilus, Rythmbox ...

De acordo com o FHS, / usr / lib deve conter "Bibliotecas para programação e pacotes" e "inclui arquivos de objeto, bibliotecas e binários internos que não devem ser executados diretamente por usuários ou shell scripts" (< a href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE11"> 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 de usuário completos!

Ainda estou no caminho certo para ter meu aplicativo instalado em / opt. Mas eu realmente gostaria de entender se isso é correto e, acima de tudo, por que .

Obrigado antecipadamente pelos seus conselhos,

Eric.

    
por Eric MORAND 27.08.2013 / 18:02

5 respostas

6

A chave real para entender o Padrão de Hierarquia do Sistema de Arquivos é saber que ele é projetado com sistemas de arquivos de rede em mente.

Para cada máquina do mesmo SO, release e arquitetura, você pode compartilhar / usr via NFS e montá-lo.
/ usr é (re) montado depois que a pilha de rede é inicializada.

/var <-- local, r/w optimized
/usr <-- can be mounted over network, possibly even read-only!
/opt <-- local, read mostly
/etc <-- local, read mostly
/srv <-- local, r/w optimized

/home <-- either/or
    
por 27.08.2013 / 19:27
12

A diferença é que /usr serve para manter os pacotes instalados como parte do sistema . Pacotes que você obtém dos repositórios Debian / Ubuntu, PPAs, etc., vão aqui. Enquanto /opt é destinado a aplicativos terceiros não distribuídos que não são distribuídos através do 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, instale em /usr . Caso contrário, instale em /opt . Em qualquer um dos casos, seu aplicativo deve poder ser compilado para ser executado em qualquer local arbitrário (por exemplo, com a ajuda dos autotools GNU).

    
por 27.08.2013 / 18:28
1

Sugiro que evite instalar seu aplicativo em / opt. Razão 1: Algumas distros não têm / opt por padrão Razão 2: / usr / lib é um caminho padrão para bibliotecas {Se outros aplicativos precisarem usar sua biblioteca, você precisará adicionar seu caminho de biblioteca manualmente ao / etc / ldconfig} / opt é mais conveniente quando você tem aplicativos autônomos que instala manualmente e deseja saber onde eles estão localizados

Uma das razões pelas quais os executáveis completos estão localizados em / usr / lib pode ser que eles sejam usados de outros scripts. {Por exemplo, scripts 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}

    
por 27.08.2013 / 18:22
1

Você instala suas bibliotecas em <prefix>/lib , seus binários em <prefix>/bin , seus arquivos de cabeçalho em <prefix>/include , man pages em prefix/[share/]man , arquivos pkgconfig em <prefix>/lib/pkgconfig ou <prefix/share/pkgconfig , seus arquivos cmake .m4 em <prefix>/share/aclocal

Em seguida, deixe o gerenciador de pacotes decidir o prefixo. Se você mesmo está distribuindo os rpm / deb's, /usr é uma boa escolha para um prefixo.

./configure --prefix=~/.local/ Ainda deve funcionar, então não codifique seu caminho em qualquer lugar, por favor!

Algumas bibliotecas são agrupadas em alguma outra ferramenta que as torna também executáveis e utilizáveis como uma biblioteca, mas ainda são bibliotecas, e não em seu $ PATH, portanto, é ok colocá-las em / lib, eu acho.

    
por 02.09.2013 / 15:32
0

Por favor, instale-o em / opt.

Muitas aplicações Linux fazem o mesmo que os desenvolvedores do Windows fizeram 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). Então vieram 15 anos do inferno da DLL, pois diferentes pacotes de software precisavam de versões diferentes das mesmas bibliotecas (que no Windows não tinham controle de versão das bibliotecas).

A menos que você esteja escrevendo um software de sistema real, coloque-o em / opt, para que as pessoas possam acompanhar melhor quem instalou o quê.

    
por 28.08.2013 / 03:20

Tags