rpm 依赖冲突在麒麟上怎么排查
讲银河麒麟上 rpm/dnf 装包报依赖冲突的排查方法:读懂报错、区分缺失与版本冲突、按顺序定位到具体包,给出常用命令与解决路径。
结论先行
依赖冲突的排查顺序是先读懂报错里的关键包名与要求版本,再判断是「缺失」还是「版本被钉死」,最后定位到那个钉死它的包。在 V11 服务器条目 上,用 dnf 的解析命令最省力。
读报错的两个关键字段
dnf install -y pkg
# 报错里关注:
# 1) 缺的是哪个包的哪个版本(requires)
# 2) 哪个已装包在顶住它(conflicts / provides)
排查三板斧
# 1. 谁需要提供这个依赖
dnf repoquery --whatrequires '需要项'
# 2. 仓库里有没有满足的版本
dnf repoquery --qf '%{name}-%{version}-%{arch}' 包名
# 3. 已装的是不是旧版本在顶住
rpm -q 被顶住的包
结论分两支:缺失 → 补介质或换更全的源(源配置见 麒麟系列总览);版本被钉死 → 升级顶住它的那个包,或一并规划替换。
解决路径(按安全度排序)
- 升级钉死版本的那组包到目标版本。
- 卸载冲突包(先查反向依赖
rpm -qR,避免拆掉在用的组件)。 - 换提供该依赖的替代包。
- 最后才考虑
--skip-broken,且要明白它只是跳过不是修复。
离线场景的特殊点
离线源包不全时,冲突常表现为「需要的版本源里没有」。先确认 麒麟系列总览 的介质是否完整,别急着调参数。
红线
不要用 rpm -ivh --nodeps 硬装——当下能装上,后续整个包体系更新都会被打穿。
相关条目可参考 Rufus 条目。