跟踪包依赖关系的工具

跟踪包依赖关系的工具

Linux 发行版和 BSD 版本中的许多软件包管理器都会跟踪软件包依赖关系。但在软件包进入存储库之前,维护人员会对其进行调查,并手动跟踪依赖关系。

什么软件可用于跟踪软件包依赖关系?纯文本文件不太好,因为它们是平面的。可以将数据保持在树状结构中的大纲更好,但并不理想,因为依赖关系并不总是形成树,有时它们会形成图形。

请记住,我不是在寻找能够自动解决依赖关系的东西。我正在寻找一个可以存储包之间的依赖关系并允许查询显示包依赖关系的应用程序(如包管理器)。

答案1

我不确定我是否理解了你的问题,但这正是包管理器所做的。

在 Debian 上,你可以使用

apt-cache depends <packageX>

显示 packageX 的依赖项,以及

apt-cache rdepends <packageX>

显示反向依赖关系(依赖于 packageX 的包)。

如果这不是您想要的,也许您可​​以描述一下您想要做什么?

答案2

我对存储库/软件包维护没有那么多经验,但是我制作了一些软件包,要么是内部软件(我放在所有盒子上的通用脚本和 Nagios 插件的 RPM),要么是尚未推出的全新东西(CentOS 存储库中的 Bacula 比当前版本落后了一个主要版本)。

我来自基于 RPM 的环境,因此术语可能不一样,但总体思路应该是......

我只是保留了我曾经构建过的每个软件包的存储库(以源代码形式和完成的软件包形式)。根据需要,我将依赖关系信息包含在 RPM SPEC 文件中,以便将其纳入 RPM。当我想知道我构建的软件包的依赖关系是什么时,我只需“rpm -qpR foo.rpm”,它就会列出 RPM 报告的依赖关系。如果您想要一个详尽的递归列表,您可以编写一个递归脚本,使用该逻辑来检查依赖关系的依赖关系等。

如果您说的是较低级别的,那么当我构建软件包时,我总是将源代码保存在 /buildroot 下,并且对于每个软件包,我通常保留两个文件:构建过程的屏幕日志和“buildnotes”文件。如果存在任何类型的奇怪依赖关系问题,我会在 buildnotes 中记录它(我通常将其放入 /usr/share/doc/PACKAGENAME 或类似位置的软件包中) - 但对于那些内容(人类可读的依赖关系、打包者的注释等 - 比软件包格式所了解的依赖关系更详细的东西),我还没有听说过任何自动跟踪它的方法,除了 wiki 或 makefile 中的某些内容。

相关内容