创建 Debian 软件包时解析 `${shlibs:Depends}` 的详细过程是什么?

创建 Debian 软件包时解析 `${shlibs:Depends}` 的详细过程是什么?

我最近的工作涉及很多 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以及底部注释中提到的其他相关手册页。

相关内容