CentOS 8相比7.9在软件包管理上有何不同?

CentOS 8 相比 CentOS 7.9 在软件包管理上有以下主要区别:

1. 包管理器变更

  • CentOS 7: 使用 yum(基于 Python 2)
  • CentOS 8: 使用 dnf(Dandified YUM)作为默认包管理器
    • yum 命令仍然存在,但实际上是 dnf 的符号链接
    • 性能更好,依赖解析更高效
    • 支持模块化内容

2. 模块化仓库(AppStream)

CentOS 8 引入了模块化仓库概念:

  • BaseOS: 提供核心操作系统组件
  • AppStream: 包含应用程序、运行时环境和工具
    • 允许同一软件包有多个版本共存
    • 通过模块流(module streams)管理不同版本
# 查看可用模块
dnf module list

# 启用特定版本的软件(如不同Python版本)
dnf module enable python39

3. 软件包格式

  • CentOS 7: 主要使用 RPM 包
  • CentOS 8: 继续使用 RPM,但通过模块提供更灵活的版本管理

4. 关键命令变化

# CentOS 7
yum install package
yum update
yum search pattern

# CentOS 8(兼容yum语法,但实际使用dnf)
dnf install package
dnf update
dnf search pattern

# 新功能:历史记录查看
dnf history
dnf history undo <id>

5. Python 版本

  • CentOS 7: Python 2.7 为系统默认
  • CentOS 8: Python 3.6 为默认 Python 版本
    • Python 2 仍可通过模块安装

6. 仓库配置

  • CentOS 8 使用 .repo 文件格式与 CentOS 7 类似
  • 但仓库结构不同(BaseOS/AppStream 分离)

7. 性能改进

  • dnfyum 有更快的依赖解析
  • 更少的内存占用
  • 支持并行下载

8. 软件包可用性

某些在 CentOS 7 中可用的软件包在 CentOS 8 中:

  • 可能已被移除
  • 可能转移到 AppStream 模块
  • 可能需要从 EPEL 或其他第三方仓库获取

迁移注意事项

  1. 脚本中的 yum 命令通常可以继续使用
  2. 但某些高级功能可能需要调整为 dnf 语法
  3. 模块化功能需要重新学习配置方式
  4. Python 相关工具需要适配 Python 3

重要提示:CentOS 8 已于 2021 年底结束支持,建议考虑迁移到 RHEL、Rocky Linux、AlmaLinux 或 CentOS Stream 等替代发行版。

云服务器