Gentoo Portage。 “revdep-rebuild”命令到底有什么作用?

Gentoo Portage。 “revdep-rebuild”命令到底有什么作用?

revdep-rebuild我知道在我的 Gentoo Linux 升级后需要运行它。我也有点理解revdep-rebuild检测共享库冲突并以某种方式修复它们。但我想了解更多。

如果(假设)我决定revdep-rebuild手动完成工作,我会怎么做?我将如何选择所有二进制文件进行测试?我如何检查某些特定的二进制文件是否正常?如果二进制文件存在问题 - 我如何知道要重新出现哪个包才能修复它?

答案1

  1. 首先,您可能会找到所有可执行文件。
  2. 然后使用ldd来查找*.so依赖关系。
  3. 之后,如果某个共享对象不存在,则用于qfile检测ebuild是否包含它。
  4. 最后,重新出现所有检测到损坏的包。

答案2

请阅读推理部分在 CentOS 7 上使用 Awesome 窗口管理器。分布是否是二进制的并不重要。这是因为相同的行为可能发生在所有发行版中。

链接帖子中的第 4 - 6 项是revdep-rebuld修复的内容。第 4 项的奇特名称是“反向依赖”。我能找到的唯一定义是在这个依赖地狱的维基百科条目。请参阅冲突和循环依赖关系。

revdep-rebuld反向依赖重建的简称,其工作原理是扫描/lib目录中的.so对象,然后比较S哈雷德.a如果static-libs使用了 USE 标志,则指向静态库 - 文件的版本。然后将这两者与“ldd 如果存在不匹配,则将包标记为重建”的输出进行比较,然后重建。


所有这些都在 webKnjaz 的答案中,除了总是revdep-rebuild从步骤 2 开始,即它总是假设所有包都已损坏,因此它假设所有库在扫描之前都已损坏。

您还应该知道它revdep-rebuild已被集成到新版本的集合sys-apps/portage@preserved-rebuild

相关内容