嘿,各位开发者朋友们,大家好!
还在为 CentOS 7 即将停止维护(EOL)而发愁吗?或者觉得手头的 CentOS 8 不够“新”,想体验一下 CentOS Stream 9 的新特性?别担心,今天这篇文章就是为你准备的。
本文会用最口语化、最简洁明了的方式,带你一步步将现有的 CentOS 7 或 CentOS 8 系统升级到最新的 CentOS Stream 9。我们会提供详细的代码、解析和一些“过来人”的经验,让你的升级之路尽可能平坦。
重要提示: 在开始任何升级操作之前,请务必、务必、务必备份你的所有重要数据!这包括系统文件、用户数据和配置文件。你可以使用
rsync,tar等工具,或者云服务商提供的快照功能。一句话:无备份,不升级!同时,强烈建议先在测试环境中演练一遍。
升级路径概览
首先,我们要明确一点:
- 从 CentOS 8 Stream 升级到 CentOS Stream 9:这是一条相对平坦的道路,官方提供了较为成熟的工具和方法。
- 从 CentOS 7 升级到 CentOS Stream 9:官方没有提供直接的升级路径。 所以,我们需要“曲线救国”,分两步走:
- 先从 CentOS 7 升级到 CentOS Stream 8。
- 再从 CentOS Stream 8 升级到 CentOS Stream 9。
听起来有点折腾?别怕,跟着下面的步骤走,你会发现其实也没那么复杂。
Part 1:从 CentOS 8 Stream 升级到 CentOS Stream 9
对于已经是 CentOS 8 Stream 的用户来说,升级到 9 是比较简单的。我们可以利用 dnf 的系统升级插件来完成这个过程。
第 1 步:系统更新与准备
首先,确保你当前的系统是最新状态。
# 更新所有已安装的软件包
sudo dnf update -y
# 重启系统以应用所有更新,特别是内核更新
sudo reboot
第 2 步:安装 CentOS Stream 9 的仓库文件
接下来,我们需要让系统“认识”到 CentOS Stream 9 的存在。
# 安装 Stream 9 的 release、repos 和 GPG keys
sudo dnf install http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/centos-stream-repos-9.0-26.el9.noarch.rpm centos-stream-release-9.0-26.el9.noarch.rpm centos-gpg-keys-9.0-26.el9.noarch.rpm -y
小贴士: 上述命令中的版本号(如 9.0-26.el9)可能会变化,建议访问 CentOS 官方镜像站 查找最新的包名。
第 3 步:执行升级
这是最关键的一步,我们将使用 distro-sync 来同步系统软件包到 Stream 9 的版本。
# --allowerasing 参数允许删除可能冲突的旧包
sudo dnf --releasever=9 --allowerasing -y distro-sync
这个过程会下载大量软件包,具体时间取决于你的网络速度和系统已安装软件的数量,请耐心等待。
第 4 步:重建 RPM 数据库并重启
升级完成后,重建一下 RPM 数据库是个好习惯,然后重启进入全新的系统。
# 重建 RPM 数据库
sudo rpm --rebuilddb
# 强制重启,让系统从新的内核和配置启动
sudo systemctl --force --force reboot
第 5 步:验证升级结果
重启后,检查一下你的系统版本。
# 查看系统版本信息
cat /etc/centos-release
# 应该会显示类似 "CentOS Stream 9" 的信息
如果一切正常,恭喜你,你的 CentOS 8 Stream 已经成功升级到 CentOS Stream 9 了!
案例分享: 我在一次升级中遇到过
python36和virt模块冲突的问题。 如果你在执行distro-sync时遇到类似错误,可以尝试先禁用这些模块:sudo dnf module disable python36 virt -y然后再重新执行升级命令。
Part 2:从 CentOS 7 升级到 CentOS Stream 9(两步走)
这是一个更具挑战性的任务,但只要我们小心谨慎,同样可以完成。
阶段一:从 CentOS 7 升级到 CentOS Stream 8
这里我们推荐使用社区开发的 ELevate 工具,它基于 Red Hat 的 Leapp 框架,专门用于 RHEL 系列发行版之间的升级。
第 1 步:更新 CentOS 7 系统
和之前一样,先确保系统是最新状态。
# 更新系统
sudo yum update -y
# 安装 EPEL 源,ELevate 工具需要它
sudo yum install -y epel-release
# 重启系统
sudo reboot
第 2 步:安装 ELevate 工具
现在,我们来安装主角 ELevate。
# 安装 elevate-release 包
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm
# 安装 leapp 和迁移数据包
sudo yum install -y leapp-upgrade leapp-data-almalinux
注意: 这里我们安装了
leapp-data-almalinux,但别担心,我们稍后会指定升级到 CentOS Stream 8。ELevate 支持迁移到多个不同的 RHEL 衍生版。
第 3 步:执行升级前检查
ELevate 最棒的一点是它有一个预升级检查功能,可以提前发现潜在的问题。
# 启动预升级检查,目标是 CentOS Stream 8
sudo leapp preupgrade --stream 8
这个命令会生成一个报告,路径在 /var/log/leapp/leapp-report.txt。仔细阅读这份报告,它会告诉你是否有“抑制(Inhibitor)”升级的问题,并给出解决方案。 在解决所有抑制问题之前,不要进行下一步!
第 4 步:执行升级
确认没有问题后,就可以正式开始了。
# 启动升级
sudo leapp upgrade --stream 8
# 升级过程会自动下载包并准备环境,最后会提示你重启
sudo reboot
系统重启后,会自动进入一个特殊的升级环境(看起来像一个临时的操作系统界面),完成最后的迁移工作。这个过程可能需要一些时间。
阶段二:从 CentOS Stream 8 升级到 CentOS Stream 9
当你成功从 CentOS 7 升级到 CentOS Stream 8 之后,接下来的步骤就和本文 Part 1 的内容完全一样了!你可以直接参考上面的步骤,将你的新系统再次升级到 CentOS Stream 9。
案例分享与注意事项:
- 网卡名称变化:跨大版本升级可能会导致网卡的命名规则从
eth0变为ens192这样的格式。 如果你使用 VNC 或者物理显示器,这通常不是大问题,但如果你依赖 SSH 远程登录,并且有严格的防火墙或脚本配置,请务必注意这一点。- 清理旧内核:升级完成后,系统里可能还残留着旧的 CentOS 7 内核。你可以使用
package-cleanup工具来清理它们。- 配置文件冲突:升级过程中,系统可能会发现新旧配置文件的冲突。
rpmconf是一个处理这类问题的好帮手。 在升级前后都可以运行rpmconf -a来检查和合并配置文件。
总结
总的来说,从 CentOS 8 Stream 升级到 9 是一次常规操作,而从 CentOS 7 升级到 9 则更像是一次“小手术”。虽然过程稍显复杂,但只要你遵循步骤,仔细阅读检查报告,并做好了充分的备份,成功率还是非常高的。
希望这篇指南能帮助你顺利完成升级,拥抱 CentOS Stream 9 的新世界!如果你在升级过程中遇到了任何问题,欢迎在下方留言讨论。
祝你好运!