Por que /usr/local/lib não está no caminho da biblioteca por padrão?

Por que /usr/local/lib não está no caminho da biblioteca por padrão?

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

Em geral, é considerado falta de educação exigir que os usuários alterem LD_LIBRARY_PATH ou ld.so.confos aplicativos que eles instalam. Veja por exemplo:

http://web.archive.org/web/20060719201954/http://www.visi.com/~barr/ldpath.html

Contudo, não deveria /usr/local/libhaver uma exceção a esta regra?

Se for esse o caso, por que muitas/a maioria das distribuições não são incluídas /usr/local/libno caminho de pesquisa da biblioteca por padrão? Até agora apenas o ArchLinux parece ter considerado isso um bug, vejahttp://bugs.archlinux.org/task/20059?project=1&opened=2263 e o relacionadohttp://bbs.archlinux.org/viewtopic.php?id=99807

É mais correto para um aplicativo que precisa de uma biblioteca /usr/local/libpara incluir /usr/local/libem seu RPATH ou esperar que o sistema operacional já tenha essa configuração? Não gosto da ideia de usar algo que não seja baseado em $ORIGIN no RPATH.

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

Responder1

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

Esta respostahttps://stackoverflow.com/a/17653893 aponta as partes mais importanteshttp://linuxmafia.com/faq/Admin/ld-lib-path.html

Muitas distribuições derivadas do Red Hat normalmente não incluem /usr/local/lib no arquivo /etc/ld.so.conf. Eu considero isso um bug, e adicionar /usr/local/lib ao /etc/ld.so.conf é uma ``correção'' comum necessária para executar muitos programas em sistemas derivados do Red Hat.

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, pode-se razoavelmente esperar que /usr/local/lib esteja no caminho de pesquisa padrão.

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

Eu investiguei isso mais detalhadamente. Se você instalar sua própria versão de uma biblioteca de sistema em /usr/local/lib então 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, faria isso de maneira bastante sutil. yum check pode informar que você possui todas as versões de fornecedores de todos os pacotes necessários e não perceber que possui sua própria versão de algo significativo em/usr/local/lib.

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

Não tenho uma resposta completa sobre 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 for prático.

informação relacionada