跳转到内容
搜索 RunEntLinux 文档

仅搜索 RunEntLinux 通用文档,各发行版文档使用各自的搜索入口。

    浏览当前文档目录

    EL 8 升级到 EL 9

    从 EL 8(CentOS 8、AlmaLinux 8、Rocky Linux 8)升级到 EL 9 是一次跨大版本升级。本文档以 Leapp 和 ELevate 工具为核心,介绍完整的升级流程。

    源系统目标系统工具
    AlmaLinux 8AlmaLinux 9Leapp / ELevate(leapp-data-almalinux)
    CentOS Stream 8CentOS Stream 9ELevate(leapp-data-centos)
    Rocky Linux 8Rocky Linux 9❌ 无官方原地升级路线(没有 leapp-data-rocky,见下)
    • 系统已更新到 EL 8 的最新小版本
    • 至少 2 GB 可用磁盘空间(/var 分区)
    • 可靠的系统备份
    • 物理或远程控制台访问(非仅 SSH)
    确保 EL 8 已更新到最新
    dnf update -y
    reboot
    确认当前系统版本
    cat /etc/redhat-release
    uname -r
    备份关键数据和配置
    # 备份 /etc 目录
    tar czf /root/etc-backup-$(date +%Y%m%d).tar.gz /etc/
    # 备份已安装的包列表
    rpm -qa --qf '%{NAME}\n' | sort > /root/installed-packages-el8.txt
    # 备份分区表
    fdisk -l > /root/partition-table.txt
    # 备份引导配置
    cp -a /boot/grub2/ /root/grub2-backup/
    安装 ELevate 仓库
    dnf install -y https://repo.almalinux.org/elevate/elevate-release-latest-el8.noarch.rpm

    根据目标系统安装对应的数据包:

    升级到 AlmaLinux 9
    dnf install -y leapp-upgrade leapp-data-almalinux
    升级到 CentOS Stream 9(如需)
    dnf install -y leapp-upgrade leapp-data-centos
    执行升级前评估
    leapp preupgrade

    此命令会生成详细的报告,列出所有需要处理的问题。

    查看预升级报告
    cat /var/log/leapp/leapp-report.txt
    移除无效仓库
    # 禁用不兼容的第三方仓库
    dnf config-manager --disable <仓库名>
    确认 PAM 模块兼容性
    leapp answer --section authselect_check.confirm=True
    手动指定 GRUB 设备
    echo 'GRUB_DEVICE=/dev/sda' >> /etc/default/leapp
    移除第三方内核模块
    rmmod <模块名>
    # 并从 /etc/modules-load.d/ 中移除对应配置
    列出非官方仓库的包
    dnf list installed | grep -v '@baseos' | grep -v '@appstream'

    处理不了、又确实要保留的包,按 Leapp 报告给出的 section 回答,或先把该包升级/替换到 EL9 可用的版本;不要手改 /etc/leapp/transaction/to_remove 或 to_keep——那是 Leapp 内部事务目录,不是官方支持的用户接口,写进去可能不生效,也可能让升级中断。

    查看报告里要求处理的项
    sudo less /var/log/leapp/leapp-report.txt
    # 需要作答时用报告里的 section 名(不要自己编)
    sudo leapp answer --section <section-from-report>.confirm=True
    执行原地升级
    leapp upgrade

    升级过程需要较长时间,请耐心等待。

    重启系统以完成升级
    reboot
    确认已升级到 EL 9
    cat /etc/redhat-release
    uname -r
    rpm -q kernel-core
    检查失败的服务
    systemctl --failed
    检查网络配置
    ip addr show
    nmcli connection show
    ping -c 3 8.8.8.8
    检查仓库配置
    dnf repolist
    dnf check-update
    清理 Leapp 升级数据
    # 移除旧版本的包
    dnf remove -y leapp-upgrade leapp-data-* elevate-release
    # 检查 EL 8 残留包(含旧内核),逐个确认后再删或升级,不要按 grep 批量删
    rpm -qa | grep el8
    # 移除 Leapp 残留数据
    rm -rf /var/log/leapp /root/tmp_leapp_py3
    重建 RPM 数据库
    rpm --rebuilddb
    重新标记 SELinux
    fixfiles -B onboot
    reboot

    EL 9 默认使用 NetworkManager key-file 格式替代旧的 ifcfg 格式。

    迁移网络配置到新格式
    nmcli connection migrate

    EL 9 默认禁用了一些旧的加密算法。

    检查 SSH 加密策略
    update-crypto-policies --show

    如果需要临时兼容旧客户端:

    临时降低加密策略(不推荐长期使用)
    update-crypto-policies --set DEFAULT:SHA1

    EL 9 默认 Python 版本为 3.9,不再提供 Python 2。

    检查 Python 版本
    python3 --version
    alternatives --list | grep python
    检查并重置 PHP 模块流
    dnf module list php
    dnf module reset php
    dnf module enable php:8.1
    检查共享库依赖是否满足
    for bin in /usr/local/bin/*; do
    ldd "$bin" 2>&1 | grep "not found" && echo " --> $bin"
    done
    验证自定义服务文件
    systemd-analyze verify /etc/systemd/system/*.service 2>&1 | grep -v "^$"
    对比包变更
    rpm -qa --qf '%{NAME}\n' | sort > /root/installed-packages-el9.txt
    diff /root/installed-packages-el8.txt /root/installed-packages-el9.txt

    如果升级过程中断或失败:

    查看升级日志
    cat /var/log/leapp/leapp-upgrade.log
    journalctl -b -p err

    如果事先创建了 LVM 快照或虚拟机快照,直接恢复是最可靠的回滚方式。

    从 LVM 快照恢复(如适用)
    lvconvert --merge /dev/vg0/pre-upgrade-snap
    reboot