Por que não é / usr / local / lib no caminho da biblioteca por padrão? [fechadas]

1

Sob o FHS , os pacotes do sistema (por exemplo, RPMs) instalam bibliotecas em /usr/lib (ou /usr/lib64 ). Da mesma forma, bibliotecas compiladas usando a antiga rotina " configure;make;make install ", que não fazem parte da distribuição do sistema, são instaladas por padrão em /usr/local/lib (ou /usr/local/lib64 ).

Em geral, considera-se inadequado exigir que os usuários alterem LD_LIBRARY_PATH ou ld.so.conf dos aplicativos que eles instalam. Veja por exemplo:

link

No entanto, a /usr/local/lib não deve ser uma exceção a essa regra?

Se esse for o caso, por que não muitas / a maioria das distribuições incluem /usr/local/lib no caminho de pesquisa da biblioteca por padrão? Até agora, apenas o ArchLinux parece ter considerado isso como bug veja o link & o link

relacionado

É mais correto para um aplicativo que precisa de uma biblioteca em /usr/local/lib incluir /usr/local/lib em seu RPATH ou esperar que o SO já tenha essa configuração? Eu não gosto da idéia de usar qualquer coisa que não seja baseada em $ ORIGIN no RPATH.

Esta não é uma questão de pedantismo, pois tem implicações para a estabilidade do sistema e como o software deve ser empacotado.

    
por Bruce Adams 07.04.2017 / 18:19

1 resposta

2

Foi sugerido que / usr / local / lib deve estar no caminho padrão e deve ser considerado um 'bug' em variantes do Linux, como a Red Hat, onde não está.

Esta resposta link aponta as partes salientes do link

Many Red Hat-derived distributions don't normally include /usr/local/lib in the file /etc/ld.so.conf. I consider this a bug, and adding /usr/local/lib to /etc/ld.so.conf is a common ''fix'' required to run many programs on Red Hat-derived systems.

Eu levantei isso com a Red Hat e agora discordo.

Os pacotes fornecidos pela Red Hat nunca são instalados em / usr / local em sistemas onde os fornecedores instalam em / usr / local a resposta é diferente. Nesses sistemas, o / usr / local / lib pode ser razoavelmente esperado no caminho de pesquisa padrão.

A Red Hat apontou que / usr / local / lib não deveria estar no caminho de busca padrão, pois qualquer biblioteca adicionada poderia ser escolhida pelo RPM e pelo yum.

Eu investiguei isso ainda mais. Se você instalar sua própria versão de uma biblioteca de sistema em / usr / local / lib, ela poderá satisfazer uma dependência de outro pacote de sistema que você instala normalmente via RPM ou yum. Obviamente, isso pode afetar a estabilidade do sistema. Pior, isso seria muito sutil. yum check pode informar que você tem todas as versões de fornecedores de todos os pacotes que você precisa e não perceba que você possui uma versão própria de algo significativo em / usr / local / lib.

Em sistemas que usam um gerenciador de pacotes diferente, isso pode não se aplicar.

Eu não tenho uma resposta completa para o que colocar no seu RPATH. No entanto, acho que você deve evitar depender de bibliotecas em / usr / local / lib e, em vez disso, instalá-las em / opt (ou seja, em algum lugar que você controle como parte de sua instalação) sempre que possível.

    
por 09.04.2017 / 02:45

Tags