创建Debian软件包时解决`${shlibs:Depends}`的详细过程是怎样的?

yao*_*bin 5 packaging dpkg dependencies deb

我最近的工作涉及大量 Debian 打包,我使用Debian 新维护者指南作为我的主要参考。

我还没有完全理解的是如何${shlibs:Depends}解析为特定的包和版本。我所说的“如何”是指从变量到该领域的最终包列表的详细步骤${shlibs:Depends}Depends

第 4 章说:

dh_shlibdeps(1) 计算二进制包的共享库依赖关系。它生成为每个二进制包找到的 ELF 可执行文件和共享库的列表。该列表用于替换 ${shlibs:Depends}。

我想我真正感兴趣的是“生成它为每个二进制包找到的ELF可执行文件和共享库的列表”的详细步骤,例如使用的信息源是什么。

我还查看了Debian政策手册中的“8.6.4. shlibs系统”部分,它确实提供了一些信息来源,但似乎仍然没有谈论详细步骤。

我当然可以深入研究dh_shlibdeps脚本来弄清楚它是如何完成的,但我不愿意这样做,因为我还没有学过 Perl,所以我想看看是否有任何其他我不知道的参考资料已经涵盖了这一点。如果没有这样的参考,我肯定会阅读代码。

谢谢!

use*_*.dz 2

这个主题对我来说也是新的,但是这里可以收集什么(可能没有完全排序)并省略了一些全局设置文件。

ldd
dpkg -S
deb-shlibs

objdump
deb-symbols
dpkg-gensymbols

debian/shlibs.local
dpkg-shlibdeps
debian/substvars .. shlibs:dependency-field
Run Code Online (Sandbox Code Playgroud)

符号解析很安静,有些工具只是在依赖库上运行,而不是依赖包,只需为 Debian 软件包构建器准备包含在 lib Debian 软件包中的 lib 信息。不管怎样,你检查一下: