Estou lendo a seção de política do Debian no pacote de biblioteca compartilhada em tempo de execução e me deparei com a seguinte declaração:
Qualquer pacote que instale bibliotecas compartilhadas em um dos diretórios de bibliotecas padrão do vinculador dinâmico (que são atualmente
/usr/lib
e/lib
) ou em um diretório listado em/etc/ld.so.conf
[5] deve ser usadoldconfig
para atualizar o sistema de bibliotecas compartilhadas.Qualquer pacote desse tipo deve ter a linha
activate-noawait ldconfig
em seu arquivo de controle de gatilhos (ou seja,DEBIAN/triggers
).
Estou curioso para saber o que pode acontecer se eu esquecer de adicionar esse gatilho. Atualmente, tenho um pacote dev instalado sem nenhum gatilho e um binário vinculado à biblioteca funciona muito bem.
Por que o requisito é importante?
O requisito é importante porque
ld.so
usa um cache para resolver bibliotecas eldconfig
atualiza esse cache. Você pode visualizar seu conteúdo executandoSe você pular o gatilho, sem executar
ldconfig
empostinst
nenhum deles (que é o que os pacotes de biblioteca costumavam fazer), o cache não será atualizado.Isso não diz respeito a
-dev
pacotes porque eles não instalam bibliotecas de tempo de execução. Eles normalmente dependem de um pacote de biblioteca que terá o gatilho.Ao desenvolver um pacote, isso geralmente é feito de forma transparente pelas ferramentas de compilação. Por exemplo, se você usar
debhelper
ou qualquer coisa que dependa disso, a compilação normalmente terminará em execuçãodh_makeshlibs
, o que adicionará o gatilho, se necessário.