加油
努力

从 CentOS 7.6 升级到 8.2 后,软件包管理有哪些变化?

从 CentOS 7.6 升级到 CentOS 8.2 后,软件包管理系统发生了显著变化。这些变化主要体现在包管理工具、仓库结构、模块化支持和系统架构等方面。以下是关键的变化点:


1. 包管理工具从 yumdnf

  • CentOS 7:使用 yum(Yellowdog Updater, Modified)作为默认的包管理器。
  • CentOS 8yumdnf(Dandified YUM)取代为默认的前端工具。

实际上,在 CentOS 8 中运行 yum 命令会自动调用 dnf,因为 yumdnf 的符号链接。

主要优势:

  • 更快的依赖解析(基于 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 dnfyum 为别名)
仓库结构 base, updates, extras 等 BaseOS + AppStream
模块化支持 不支持 支持(通过 AppStream)
Python 默认版本 Python 2 Python 3
EPEL 默认启用 是(通过 extras) 否(需手动安装)
包依赖解析引擎 yum + depsolve dnf + libsolv(更快)
官方就地升级支持 有限支持(leapp 工具)

建议操作

升级后应:

  1. 使用 dnf 替代 yum(尽管兼容)
  2. 熟悉模块化命令:dnf module ...
  3. 检查第三方仓库(如 EPEL、Remi)是否适配 CentOS 8
  4. 验证关键服务和脚本的兼容性(特别是 Python 脚本)

如有进一步问题(如具体软件包迁移、模块启用等),欢迎继续提问!

云服务器