Linux 发行版和 BSD 风格中的许多包管理器跟踪包依赖关系。但是在一个包进入存储库之前,它会由维护人员进行调查,维护人员手动跟踪依赖关系。
可以使用哪些软件来跟踪包依赖关系?纯文本文件不是很好,因为它们是扁平的。可以将数据结构化为树的大纲更好,但并不理想,因为依赖项并不总是形成树,有时它们会形成图。
请记住,我不是在寻找可以自动解决依赖关系的东西。我正在寻找一个可以存储包之间的依赖关系并允许查询显示包的依赖关系的应用程序(如包管理器)。
Linux 发行版和 BSD 风格中的许多包管理器跟踪包依赖关系。但是在一个包进入存储库之前,它会由维护人员进行调查,维护人员手动跟踪依赖关系。
可以使用哪些软件来跟踪包依赖关系?纯文本文件不是很好,因为它们是扁平的。可以将数据结构化为树的大纲更好,但并不理想,因为依赖项并不总是形成树,有时它们会形成图。
请记住,我不是在寻找可以自动解决依赖关系的东西。我正在寻找一个可以存储包之间的依赖关系并允许查询显示包的依赖关系的应用程序(如包管理器)。
不确定我是否理解您的问题,但这正是包管理器所做的。
例如,在 Debian 上,您可以使用
显示 packageX 的依赖项,以及
显示反向依赖项(依赖于 packageX 的包)。
如果这不是您想要的,也许您可以描述您想要做什么?
我对存储库/包维护没有那么丰富的经验,但是我分享了一些包,无论是内部软件(我放在所有盒子上的常见脚本和 Nagios 插件的 RPM),还是真正的新东西尚不可用(CentOS 存储库中的 Bacula 是当前落后的完整主要版本)。
我来自基于 RPM 的环境,所以术语可能不一样,但总体思路应该是......
我只是保留我曾经构建的每个包的存储库(以源代码形式和完成的包)。根据需要,我将依赖信息包含在 RPM SPEC 文件中,以便将其滚动到 RPM 中。当我想知道我构建的包的依赖关系是什么时,我只需要“rpm -qpR foo.rpm”,它会列出 RPM 报告的依赖关系。如果您想要一个详尽的递归列表,您可以编写一个递归脚本,使用该逻辑检查依赖项的依赖关系等。
如果您在谈论较低级别,当我构建包时,我总是将源代码保存在 /buildroot 下,并且对于每个包,我通常保留两个文件:构建过程的屏幕日志和“buildnotes”文件。如果有任何奇怪的依赖问题,我会在 buildnotes 中记下它(我通常会在 /usr/share/doc/PACKAGENAME 或某个此类位置中将其放入包中) - 但对于那些东西(人类可读的依赖项,打包者的注释)等 - 比包格式对依赖关系的了解更详细)我还没有听说过任何自动跟踪它的方法,除了 wiki 或 makefile 中的东西。