我正在阅读有关运行时共享库包的 Debian 政策部分,并遇到以下声明:
任何在动态链接器的默认库目录之一(当前是
/usr/lib
and )或[5]/lib
中列出的目录中安装共享库的包都必须用于更新共享库系统。/etc/ld.so.conf
ldconfig
任何此类包都必须
activate-noawait ldconfig
在其触发器控制文件中包含该行(即DEBIAN/triggers
)。
我很好奇如果我忘记添加这样的触发器会发生什么。目前我安装了一个没有任何触发器的开发包,并且与该库链接的二进制文件工作得很好。
为什么要求很重要?
该要求很重要,因为
ld.so
使用缓存来解析库并ldconfig
更新该缓存。您可以通过运行查看其内容如果您跳过触发器,而不
ldconfig
在您的postinst
任何一个中运行(这是过去需要库包执行的操作),则不会更新缓存。这与
-dev
包无关,因为它们不安装运行时库。它们通常依赖于具有触发器的库包。在开发包时,这通常由构建工具透明地处理。例如,如果您使用
debhelper
或依赖于它的任何东西,则构建通常会最终运行dh_makeshlibs
,这将在必要时添加触发器。