dnf 与 rpm 在麒麟里的关系与分工
讲银河麒麟上 rpm 与 dnf 的分工:rpm 直接管包文件,dnf 在其上做依赖解析与仓库管理;给出日常场景该用哪个的判断与常用命令。
结论先行
在 V11 服务器条目 上,日常装/更新/查包用 dnf,只有处理单个离线 rpm 文件、看已装包的细节才直接碰 rpm。dnf 是建在 rpm 之上的事务管理器,依赖解析、仓库、缓存都由它做。
两者分工
| 场景 | 用什么 |
|---|---|
| 安装/更新/卸载包 | dnf install / update / remove |
| 查包在不在仓库、看依赖 | dnf repoquery / dnf deplist |
| 直接装单个 rpm 文件 | rpm -ivh(dnf 也可 dnf install 文件.rpm) |
| 看已装包版本、文件归属 | rpm -q / rpm -qf |
| 查补丁与发行信息 | rpm -qa / rpm -E |
dnf 底层调用 rpm 写数据库;用 dnf 事务装包和直接 rpm 装包的效果一致,但 dnf 会顺带处理依赖。
常用命令速查
# dnf:带依赖解析的装包
dnf install -y somepkg
# dnf:只看依赖不执行
dnf install --assumeno somepkg
# rpm:查已装版本与最近装上的包
rpm -q somepkg
rpm -qa --last | head
# rpm:查文件属于哪个包
rpm -qf /usr/bin/某程序
介质获取参考 麒麟系列总览;离线场景的介质制作参考 Rufus 条目。
常见误区
- 有仓库可用还
rpm -ivh,把 dnf 的依赖解析绕过去了,后续更新容易乱。 - 用
rpm -e卸包没查反向依赖,把正在用的组件拆了。 - 桌面版(如 V11 桌面)图形安装器背后也是同一套包管理,手动操作前先看清它做了什么。