RHEL 10 采用评估:九项先核对的事实
This content is not available in your language yet.
“RHEL 10 能不能上”通常不是一个是非题,而是九个具体事实:内核、init、网络、包管理、语言运行时、TLS、容器、校验级。先把它们在你的镜像上核对一遍,再谈迁移。
在 PVE 390 rhel10-lab(RHEL 10.2 x86_64,cloud image 最小安装)上执行:
cat /etc/redhat-releaseuname -rsystemctl --version | head -1NetworkManager --versionnft --versionrpm -q iptablespython3 --version; ls /usr/bin/python3*openssl version; update-crypto-policies --showpodman --version; rpm -q dockerdnf --version; rpm --eval '%{_pkgverify_level}'E3 记录:plans/content-expansion/evidence/rhel/rhel-adoption-checklist/run.json(13 步,含每步输出 sha256)。
| 项目 | RHEL 10.2 实测 | 迁移影响 |
|---|---|---|
| 内核 | 6.12.0-211.7.3.el10_2 | 驱动/文件系统/内核模块需按 6.12 重验 |
| init | systemd 257 | unit 语法、systemctl 行为按 257 核对 |
| 网络 | NetworkManager 1.56.0 | nmcli/keyfile 为唯一主路径 |
| 防火墙 | nftables 1.1.5;iptables 包未装 | 规则改用 nft,别假设 iptables 存在 |
| Python | 3.12.13,仅 python3.12 | 依赖 3.9/3.11 的脚本/ wheel 需重建 |
| TLS | OpenSSL 3.5.5,策略 DEFAULT | 旧算法、SHA-1 证书链需验证 |
| 容器 | Podman 5.8.2;docker 未装 | 按 Podman/CRI-O 评估,不默认 docker |
| 包管理 | DNF 4.20.0(非 dnf5) | 4.x 语法继续有效;模块/filelists/debug 有变化 |
| 校验级 | _pkgverify_level=digest | 包校验与签名策略按 digest 级核对 |
为什么这九项会改变迁移步骤
Section titled “为什么这九项会改变迁移步骤”Python 3.12 是唯一运行时
Section titled “Python 3.12 是唯一运行时”$ python3 --versionPython 3.12.13$ ls /usr/bin/python3*/usr/bin/python3 /usr/bin/python3.12没有 python3.9/python3.11。依赖 C 扩展的 wheel、distutils 移除、imp 移除等 3.12 变化都会在迁移时暴露;先在 3.12 下跑一遍测试集。
nftables 是默认,iptables 不保证存在
Section titled “nftables 是默认,iptables 不保证存在”$ nft --versionnftables v1.1.5$ rpm -q iptablespackage iptables is not installed最小 cloud image 没有 iptables 包。把“iptables -L 能跑”当成前提的脚本/文档要改;需要兼容层时显式安装并验证 iptables-nft。
OpenSSL 3.5 + DEFAULT 策略
Section titled “OpenSSL 3.5 + DEFAULT 策略”$ openssl versionOpenSSL 3.5.5$ update-crypto-policies --showDEFAULT$ rpm --eval '%{_pkgverify_level}'digestTLS 1.0/1.1、SHA-1 签名、弱 DH 参数在 DEFAULT 策略下会被拒;迁移前用真实证书链做一次握手测试,而不是只看 openssl version。
Podman 5.8,不是 docker
Section titled “Podman 5.8,不是 docker”$ podman --versionpodman version 5.8.2$ rpm -q dockerpackage docker is not installed容器编排、镜像构建、rootless 行为都按 Podman 5.x 评估;docker CLI 需要额外装,且不是红帽支持栈的默认路径。
DNF 仍是 4.20
Section titled “DNF 仍是 4.20”DNF 4.20.0,不是 dnf5。模块弃用、filelists 默认不下载、debug 插件移除这三项,单独见 RHEL 10 的 DNF 行为变化;本页不重复。
与 RHEL 9 的对比边界
Section titled “与 RHEL 9 的对比边界”本页没有 RHEL 9.8 的对照数据(9.8 镜像尚未就绪),所以不做“9→10 版本差”的断言。迁移评估时至少补三组对照:
- 9.8 与 10.2 的
python3、openssl、systemd、NetworkManager版本; - 9.8 的
iptables/nftables默认; - 9.8 的 DNF 行为(模块、filelists、debug 插件)。
迁移前的 5 个动作
Section titled “迁移前的 5 个动作”- 在目标镜像上跑完上面 13 条命令,留输出;
- 把 Python 依赖在 3.12 下重建并跑测试;
- 把
iptables规则翻译成nft,或显式安装兼容层; - 用真实证书链验证 TLS/签名;
- 按 Podman 5.x 重验容器构建与运行,不假设 docker。
未实测与边界
Section titled “未实测与边界”- 未测试 RHEL 9.8 对照(镜像尚未就绪);
- 未测试 GCC/开发工具链(cloud image 未装 gcc);
- 未测试 firewalld 默认区域与 nftables 后端;
- 未测试 FIPS 模式下的 OpenSSL 3.5 行为;
- 未测试 Podman 5.8 的 rootless/Quadlet 细节。
- RHEL 10 的 DNF 行为变化 — 模块/filelists/debug 插件
- RHEL 版本与生命周期 — 版本阶段
- RHEL 安全基线与加固 — 加固项
- 官方:Considerations in adopting RHEL 10
- 官方:RHEL 10.0 Release Notes