首页/系统/信创系统运维速查/yum 与 dnf 的关系
命令与包管理65 条

yum 与 dnf 的关系

CentOS 时代教程里 yum 遍地,新信创系统实际由 dnf 承接:yum 保留为兼容命令,参数基本互通,开发了解差异可少踩坑。

信创系统运维速查系统更新于 2026-10-13

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 updatednf updatednf 输出更清晰
yum clean alldnf clean all清理元数据与包缓存
yum repolistdnf repolist列出已启用仓库
yum groupinstalldnf group install写法略有差异
yum historydnf historydnf 的回滚能力更完善
旧脚本里的 yum install、yum clean all 等在新系统无需改写;写新脚本建议统一用 dnf,命令与输出更稳定。
少数旧插件或老写法在兼容层行为不同(例如插件未安装时直接报未知命令),出现差异时以 dnf 的行为为准。

易错点

  • 以为 yum 已废弃而重写全部脚本,实际兼容命令仍可用,属于不必要的工作量。
  • 照抄 CentOS 7 教程执行某些插件命令报未知命令,根因是插件包未安装,需要单独装 dnf 的插件包。
  • 少数旧插件参数在兼容层行为不同,出问题时以 dnf 的等价写法为准。
  • 混用 yum 与 dnf 交替操作造成缓存状态不一致,元数据陈旧导致安装结果异常,统一用一个命令更省事。
  • 看到 yum --version 显示 dnf 版本就以为装错了,实际这正是兼容层的预期表现。

数据来源与参考

  • dnf 官方文档
  • Fedora 迁移说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌