revdep-rebuild
我知道在我的 Gentoo Linux 升级后需要运行它。我也有点理解revdep-rebuild
检测共享库冲突并以某种方式修复它们。但我想了解更多。
如果(假设)我决定revdep-rebuild
手动完成工作,我会怎么做?我将如何选择所有二进制文件进行测试?我如何检查某些特定的二进制文件是否正常?如果二进制文件存在问题 - 我如何知道要重新出现哪个包才能修复它?
答案1
- 首先,您可能会找到所有可执行文件。
- 然后使用
ldd
来查找*.so
依赖关系。 - 之后,如果某个共享对象不存在,则用于
qfile
检测ebuild
是否包含它。 - 最后,重新出现所有检测到损坏的包。
答案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
。