我最近的工作涉及很多 Debian 打包,我正在使用Debian 新维护者指南作为我的主要参考。
我还没有完全理解如何${shlibs:Depends}
将解析为特定的包和版本。我说的“如何”是指详细步骤从变量${shlibs:Depends}
到字段中的最终包列表Depends
。
第四章说:
dh_shlibdeps(1) 计算二进制包的共享库依赖关系。它会为每个二进制包生成一个 ELF 可执行文件和共享库列表。此列表用于替换 ${shlibs:Depends}。
我想我真正感兴趣的是“为每个二进制包生成它找到的 ELF 可执行文件和共享库的列表”的详细步骤,例如所使用的信息源是什么。
我还查看了“8.6.4. shlibs 系统”在 Debian 政策手册中,它确实提供了一些信息来源,但似乎也没有谈到详细的步骤。
我当然可以深入研究dh_shlibdeps
脚本以弄清楚它是如何完成的,但我不愿意这样做,因为我还没有学过 Perl,所以我想看看是否还有其他我不知道的参考资料已经涵盖了这一点。如果没有这样的参考资料,我肯定会阅读代码。
谢谢!
答案1
这个主题对我来说也很新,但这里可以收集(可能没有准确排序)并省略一些全局设置文件。
ldd
dpkg -S
deb-shlibs
objdump
deb-symbols
dpkg-gensymbols
debian/shlibs.local
dpkg-shlibdeps
debian/substvars .. shlibs:dependency-field
符号解析相当复杂,一些工具仅在依赖库上运行,而不是依赖包,只需为 Debian 包生成器准备 lib 信息包含在 lib Debian 包中。无论如何,您检查:
- MOTU:库包装
man dpkg-shlibdeps
以及底部注释中提到的其他相关手册页。