在 Fedora 中,当我玩 dnf、尝试学习新东西(以及一般的 Linux)时,我注意到命令“dnf repoclosure”。当然,我运行它来查看输出。我最初的想法是,由于“dnf update”返回“依赖关系已解决”,因此不会显示任何内容。令我惊讶的是,它吐出了许多包名称及其“未解决的”依赖关系。为什么是这样?为什么“dnf update”没有显示任何依赖问题,而“dnf repoclosure”显示这么多?
究竟如何跟踪依赖关系?我认为每个包独立地通知系统它需要哪些依赖项,并且在安装时将其添加到某种注册表中。
TL;DR 问题:
- “dnf repoclosure”显示了许多未解决的依赖关系,而“dnf update”则没有显示任何依赖关系。这是为什么?有办法解决吗?我是否缺少库/包或者这意味着什么?
- 如何跟踪依赖关系?如果有所有依赖项的寄存器,那么为什么操作系统不能只获取缺少的依赖项呢?
编辑: 想要指出的是,这是 Fedora 28 的全新安装,因此不应该存在任何依赖性问题。
答案1
dnf repoclosure
默认情况下,分析整个软件包存储库,而不仅仅是您在自己的系统上安装的软件包。
我浏览了一下它的输出。看起来大多数受影响的软件包只是从F27或以前的版本继承而来而没有重建,或者它们所依赖的库是在之后升级的大规模重建日(这实际上不应该发生,但有时会发生)。其中大多数问题可以通过简单地发布版本并将包重新提交到构建系统来修复。其中一些是孤儿没有维护者的软件包,如果找不到维护者,这些软件包将从 Fedora 中删除。
该工具对于 Fedora 维护人员非常有用,可以查找未正确维护的软件包,以便他们可以找到新的维护人员或对现有维护人员提出错误。第三方存储库维护人员还可以使用它来确保其存储库中的包不存在依赖性问题。
但对于不参与维护发行包的普通 Linux 用户来说,它并不是很有用。