运行时库包的activate-noawait ldconfig触发器

运行时库包的activate-noawait ldconfig触发器

我正在阅读关于运行时共享库​​包的 Debian 政策部分并发现以下声明:

在动态链接器的默认库目录之一(当前为/usr/lib和 )或[5] /lib中列出的目录中安装共享库的任何包都必须用于更新共享库系统。/etc/ld.so.confldconfig

activate-noawait ldconfig任何此类包都必须在其触发器控制文件(即DEBIAN/triggers)中包含该行。

我很好奇如果我忘记添加这样的触发器会发生什么。目前,我安装了一个开发包,没有任何触发器,并且链接到该库的二进制文件工作得很好。

为什么这个要求很重要?

答案1

该要求很重要,因为ld.so使用缓存来解析库并ldconfig更新该缓存。您可以通过运行查看其内容

/sbin/ldconfig -p

如果您跳过触发器,而不ldconfig在其中任何一个中运行postinst(这是库包过去需要做的事情),则缓存将不会更新。

这与包无关,-dev因为它们不安装运行时库。它们通常依赖于具有触发器的库包。

开发包时,这通常由构建工具透明地处理。例如,如果您使用debhelper或依赖于它的任何东西,构建通常会最终运行,dh_makeshlibs并在必要时添加触发器。

相关内容