yum 与 dnf 是什么关系
CentOS 7 时代的教程里全是 yum,新系统实际由 dnf 承接包管理:dnf 是 yum 的下一代实现,依赖解析更快、输出更清晰、支持事务回滚。为兼容老脚本与老手册,系统通常保留 yum 作为指向 dnf 的兼容命令,常见子命令行为基本一致。理解这层关系,读旧资料时不至于以为命令过时,写新脚本时也能统一到 dnf 口径。
基本信息
| 适用平台 | RHEL 8/9、openEuler、银河麒麟服务器版、Fedora |
|---|---|
| 现状 | dnf 为默认包管理器,yum 通常保留为兼容命令 |
| 判断方式 | type yum、yum --version、ls -l $(which yum) |
| 兼容范围 | install、remove、update、clean all、repolist 等常见子命令 |
| 新增能力 | dnf history 事务回滚、group 管理、module 与插件体系 |
典型使用场景
- 读旧文档:CentOS 7 手册里的 yum 命令在新系统上直接可用
- 脚本兼容:存量运维脚本无需重写即可在新发行版运行
- 命令排查:确认 yum 到底是独立程序还是指向 dnf 的软链
- 能力升级:从 yum 迁移到 dnf,用上事务回滚与更好的依赖输出
- 培训授课:讲清两代工具的关系,避免学员重复学两套命令
验证与实际指向
验证与实际指向
type yum # 看 yum 是别名、函数还是文件
yum --version # 版本输出通常显示 dnf 版本
ls -l $(which yum) # 是否为指向 dnf 的软链接
alias | grep yum # 是否存在包装别名
rpm -q dnf yum # 确认两个包的实际安装情况
rpm -qf $(which yum) # 查 yum 命令由哪个包提供
dnf --version # 对照 dnf 版本确认一致常见子命令对照
| yum 写法 | dnf 写法 | 说明 |
|---|---|---|
| yum install 包 | dnf install 包 | 行为一致 |
| yum remove 包 | dnf remove 包 | 注意移除会带上不再需要的依赖 |
| yum update | dnf update | dnf 输出更清晰 |
| yum clean all | dnf clean all | 清理元数据与包缓存 |
| yum repolist | dnf repolist | 列出已启用仓库 |
| yum groupinstall | dnf group install | 写法略有差异 |
| yum history | dnf history | dnf 的回滚能力更完善 |
旧脚本里的 yum install、yum clean all 等在新系统无需改写;写新脚本建议统一用 dnf,命令与输出更稳定。
少数旧插件或老写法在兼容层行为不同(例如插件未安装时直接报未知命令),出现差异时以 dnf 的行为为准。