当前位置: 首页 > news >正文

DNF 与 YUM 的区别详解:从 CentOS 7 到 CentOS 9 的演进

🍥 DNF 与 YUM 的区别详解:从 CentOS 7 到 CentOS 9 的演进

标签:CentOS、YUM、DNF、Linux 包管理、系统升级、兼容性
适用版本:CentOS 7、CentOS 8、CentOS 9


🧩 一、背景介绍

CentOS 中使用的包管理工具是 RedHat 系列系统的重要组成部分。随着系统版本升级,包管理器从 yum(CentOS 7)逐渐过渡到 dnf(CentOS 8 及之后版本)。


📌 二、YUM 与 DNF 对比表

对比项YUM(CentOS 7)DNF(CentOS 8/9)
基础语言Python 2Python 3
依赖解析自定义逻辑使用 libsolv,更高效
性能相对较慢更快、并发解析依赖
插件架构支持但较弱插件系统更现代、可扩展
API旧版 API新的 Python API 接口
命令兼容性经典命令 yum install保持兼容,也可用 dnf 命令
容器兼容性适合传统环境更适合云原生、容器打包
云原生支持无内建支持支持模块化、AppStream 等
替代命令yum 命令(真实为软链接)/usr/bin/yum → /usr/bin/dnf
默认包管理器CentOS 7CentOS 8 及以后

🧪 三、Shell 示例对比

🧱 CentOS 7 示例(基于 YUM)

# 安装 nginx
yum install -y nginx# 清理缓存
yum clean all# 生成缓存
yum makecache

🚀 CentOS 8/9 示例(基于 DNF)

# 安装 nginx
dnf install -y nginx# 清理缓存
dnf clean all# 生成缓存
dnf makecache

💡 补充:CentOS 8/9 中的 yum 命令其实是软链接

$ which yum
/usr/bin/yum$ ls -l /usr/bin/yum
lrwxrwxrwx 1 root root 5  /usr/bin/yum -> dnf

🧬 四、系统内核层变化(Kernel Support)

项目CentOS 7CentOS 8CentOS Stream 9 / RHEL9
默认内核版本3.10.x(较旧)4.18(较新)5.14+(更适合云原生与容器)
cgroups 支持cgroups v1默认 cgroups v1(可切换 v2)默认 cgroups v2
systemd 版本较老 systemdsystemd 更新完全支持 systemd + 容器化
云原生支持基础支持改进镜像管理、模块化仓库支持支持 Podman、Cloud-Init、OCI

🧭 五、兼容性建议

使用场景推荐版本包管理器建议
传统运维服务器CentOS 7使用 YUM
云主机 / 轻量部署CentOS 8使用 DNF
容器构建CentOS 9使用 DNF + 模块

🔚 六、小结

  • YUM 仍然可以在 CentOS 8/9 中使用,但其实就是 dnf 的别名。
  • DNF 在依赖管理、性能和容器友好性上远超 YUM
  • 对于脚本和运维工具,推荐使用 dnf,并检测系统版本以适配。

📦 七、判断系统版本的 Shell 兼容写法

# 判断系统版本选择合适的包管理器
if grep -q -i "release 7" /etc/redhat-release; thenPM="yum"
elsePM="dnf"
fi# 使用示例
$PM install -y wget curl

🔖 关注专栏《版本那些事》获取更多运维干货!

http://www.lryc.cn/news/602482.html

相关文章:

  • nuttx串口驱动框架设计
  • HCIP笔记(第一、二章)
  • 设计模式(十六)行为型:解释器模式详解
  • 自定义View学习记录 plinko游戏View
  • 6、CentOS 9 安装 Docker
  • 状态反馈极点配置
  • 第三阶段—8天Python从入门到精通【itheima】-139节(pysqark实战-前言介绍)
  • mac电脑如何关闭防火墙
  • 本地大语言模型部署指南
  • 分布式渲染效能探析:关键网络性能要素
  • 前端基础之《Vue(25)—Vue3简介》
  • NSGA-II(Non-dominated Sorting Genetic Algorithm II) 算法求解 ZDT1 双目标优化问题
  • 【Java基础面试题】Java特点,八种基本数据类型
  • 【Zustand】从复杂到简洁:Zustand 状态管理简化实战指南
  • GTSuite许可证兼容性及要求
  • 【数据标注】详解使用 Labelimg 进行数据标注的 Conda 环境搭建与操作流程
  • 修改gitlab默认的语言
  • GitLab 18.2 发布几十项与 DevSecOps 有关的功能,可升级体验【四】
  • Java面试深度剖析:从JVM到云原生的技术演进
  • opencv学习(轮廓检测)
  • OpenCV(05)直方图均衡化,模板匹配,霍夫变换,图像亮度变换,形态学变换
  • UE5 UI自适应 DPI缩放
  • 【Spring WebFlux】 三、响应式流规范与实战
  • android-屏幕-刷新流程
  • 《深入剖析Kafka分布式消息队列架构奥秘》之Kafka基本知识介绍
  • MCU 中的 PWM(脉冲宽度调制)是什么?
  • uniapp 更新apk有缓存点不动,卸载安装apk没有问题。android
  • LeetCode 刷题【18. 四数之和】
  • R 语言科研绘图 --- 其他绘图-汇总1
  • 2025 DevOps工具生态全景解读:本土化服务与智能化演进成关键赛点