麒麟上依赖解析与依赖树怎么看
讲在银河麒麟上查包依赖、看依赖树、定位依赖冲突的方法:dnf 的依赖命令与 rpm 的查询配合使用,给出常用命令与判读方式。
结论先行
看依赖分两把尺子:dnf 查「仓库里需要什么」,rpm 查「已装了什么、谁依赖它」。在 V11 服务器条目 上排查依赖问题,两条线配合用,别只用一条下结论。
常用命令
# dnf:某包需要哪些依赖
dnf repoquery --requires pkgname
# dnf:某包会被谁依赖(反向)
dnf repoquery --whatrequires pkgname
# dnf:装前只看解析结果
dnf install --assumeno pkgname
# rpm:已装包的依赖
rpm -qR pkgname
# rpm:哪些已装包依赖它
rpm -q --whatrequires pkgname
判读依赖树的方法
- 根定位:从报错的那个包开始,用
dnf repoquery --requires看直接依赖。 - 逐层展开:对不满足的依赖重复查,直到找到缺失/版本冲突的那一层。
- 交叉验证:用
rpm -q确认「已装的版本」是否满足「需要的版本」。
报「依赖缺失」时先分两种:源里根本没有这个版本(介质不全),还是版本被别的包钉死了(冲突)。两者解法不同,对应 麒麟系列总览。
桌面与服务器差异
桌面版(麒麟 V11 桌面条目)上很多组件由图形安装器带着装,依赖树更复杂;排查时先看清是安装器拉的还是手动装的。
信创场景注意
多架构混布时,依赖解析只在同架构源内进行;给错架构的介质装包,依赖会大面积「缺失」。介质与源的组织参考 V11 服务器条目。