从 CentOS 7.6 升级到 CentOS 8.2 后,软件包管理系统发生了显著变化。这些变化主要体现在包管理工具、仓库结构、模块化支持和系统架构等方面。以下是关键的变化点:
1. 包管理工具从 yum 到 dnf
- CentOS 7:使用
yum(Yellowdog Updater, Modified)作为默认的包管理器。 - CentOS 8:
yum被dnf(Dandified YUM)取代为默认的前端工具。
实际上,在 CentOS 8 中运行
yum命令会自动调用dnf,因为yum是dnf的符号链接。
主要优势:
- 更快的依赖解析(基于
libsolv) - 更好的内存效率
- 支持模块化(modularity)
- 更清晰的事务历史记录
✅ 示例命令基本兼容:
# 安装软件包(两者语法几乎相同)
yum install httpd # CentOS 7
dnf install httpd # CentOS 8(推荐)
# 更新系统
dnf update
2. 引入 RPM 包的模块化(Modularity)
CentOS 8 引入了 AppStream 仓库的模块化支持,允许在同一系统中安装不同版本的软件(如 Python、Node.js、PHP 等)。
关键概念:
- BaseOS:提供核心操作系统组件(类似传统 CentOS 7 的 Base 仓库)。
- AppStream:提供应用程序、语言运行时及其多个版本。
使用示例:
# 查看可用模块
dnf module list php
# 安装特定版本的 PHP 模块
dnf module enable php:7.4
dnf install php
这解决了“只能安装一个版本”的问题,提升了灵活性。
3. 仓库结构重组
CentOS 8 将软件仓库分为两个主要部分:
| 仓库 | 说明 |
|---|---|
| BaseOS | 包含构建系统的底层核心包(如内核、glibc、systemd 等),保持稳定。 |
| AppStream | 包含用户空间的应用程序、开发工具、语言栈等,更新更频繁。 |
与 CentOS 7 的单一
base,updates,extras结构不同。
4. 不再默认启用 EPEL 仓库
虽然 EPEL(Extra Packages for Enterprise Linux)仍然可用,但在 CentOS 8 中需要手动安装并启用:
dnf install epel-release
此外,EPEL 在 CentOS 8 中也适配了 dnf 和模块化结构。
5. RPM 包签名和安全性增强
- 更严格的 GPG 签名验证
- 默认启用仓库的完整性检查
- 可通过
dnf配置自动处理密钥导入
6. 废弃 Python 2,转向 Python 3
- CentOS 8 默认不预装
python命令(指 Python 2) - 推荐使用
python3 - 许多系统脚本已迁移到 Python 3
注意:部分旧脚本可能需要调整
#!/usr/bin/python→#!/usr/bin/python3
7. DNF 插件生态更丰富
CentOS 8 支持更多 DNF 插件,例如:
dnf-plugins-core:提供swap,needs-restarting,config-manager等- 仓库管理更灵活:
dnf config-manager --add-repo https://example.com/repo.repo
8. 升级路径限制:不支持原地升级(In-place Upgrade)
⚠️ 重要提示:
- CentOS 不官方支持从 7 直接升级到 8。
- 所谓“升级”通常指使用
leapp工具进行迁移(仅适用于 RHEL/CentOS 从 7 到 8 的特定场景),但风险较高,且 CentOS 官方未大力推广。 - 多数情况下,建议采用 全新安装 + 数据迁移 的方式。
因此,“从 7.6 升级到 8.2”若已完成,可能是通过
leapp或手动迁移,需特别注意系统一致性。
总结:主要变化一览表
| 特性 | CentOS 7.6 | CentOS 8.2 |
|---|---|---|
| 包管理器 | yum |
dnf(yum 为别名) |
| 仓库结构 | base, updates, extras 等 | BaseOS + AppStream |
| 模块化支持 | 不支持 | 支持(通过 AppStream) |
| Python 默认版本 | Python 2 | Python 3 |
| EPEL 默认启用 | 是(通过 extras) | 否(需手动安装) |
| 包依赖解析引擎 | yum + depsolve | dnf + libsolv(更快) |
| 官方就地升级支持 | 无 | 有限支持(leapp 工具) |
建议操作
升级后应:
- 使用
dnf替代yum(尽管兼容) - 熟悉模块化命令:
dnf module ... - 检查第三方仓库(如 EPEL、Remi)是否适配 CentOS 8
- 验证关键服务和脚本的兼容性(特别是 Python 脚本)
如有进一步问题(如具体软件包迁移、模块启用等),欢迎继续提问!
云小栈