EL 10:工具链全面更新
大版本发布意味着基础工具链的一次整体换代。EL 10 把内核带到 6.12 LTS、编译器带到 GCC 14、系统默认 Python 带到 3.12、glibc 带到 2.39,容器侧则是 Podman 5;与此同时包管理器仍留在 DNF 4 系列(4.20),日常命令的手感不变。
这是什么变化
Section titled “这是什么变化”EL 的每个大版本都会对齐一批上游长期支持版本,EL 10 对齐的是 2024—2025 年的上游主线。对使用者而言,变化集中在三处:
- 编译侧:GCC 14 与新版 binutils/glibc 头文件,让一批”以前能过”的老代码编译失败;
- 运行侧:系统 Python 跨了三个小版本,老脚本需要验证;
- 容器侧:Podman 5 把 rootless 网络默认实现换成 pasta,systemd 集成推荐 Quadlet。
而包管理器仍然是 DNF 4(当前 4.20),不是 DNF 5:dnf install、dnf config-manager 等日常命令语法与 EL 9 相同。
EL 9 → EL 10 对比
Section titled “EL 9 → EL 10 对比”| 组件 | EL 9 | EL 10 | 备注 |
|---|---|---|---|
| kernel | 5.14 | 6.12 | LTS,新硬件支持显著改善 |
| GCC | 11 | 14 | 默认诊断更严格,C23 |
| glibc | 2.34 | 2.39 | |
| Python(系统默认) | 3.9 | 3.12 | 移除 distutils 等旧模块 |
| OpenSSL | 3.0.x | 3.5.x | 新增后量子算法支持 |
| Podman | 4.x | 5.x | rootless 网络默认 pasta |
| 包管理器 | DNF 4 | DNF 4.20 | 仍是 DNF 4,非 DNF 5 |
各发行版官方仓库的当前精确版本见常用软件版本对照表(构建时自动同步)。
- 自研软件与内核模块:GCC 14 把隐式函数声明、不兼容指针类型等从警告升级为默认错误,老 C 代码与 out-of-tree 内核模块可能当场编译失败;要么修源码,要么临时用
-Wno-error=…降级(不推荐长期)。 - Python 业务脚本:3.9 → 3.12 跨三个小版本,
distutils等模块已移除,部分语法与标准库行为有变。EL 10 的系统 Python 仅供系统组件使用,业务代码请放入 venv。 - 容器工作流:
podman generate systemd已弃用,systemd 集成改用 Quadlet;rootless 网络默认 pasta,个别依赖 slirp4netns 行为的脚本需验证。 - 二进制兼容:glibc 向后兼容,老二进制通常照跑;但链接旧版 OpenSSL 1.x 的程序需要重新验证。
uname -rgcc --version | head -1python3 --versionldd --version | head -1podman --version- 升级前在 EL 10 的容器或虚拟机里把自研组件完整编译一遍;
- Python 业务脚本在 3.12 + venv 环境跑一遍回归;
- 容器 systemd 集成迁移到 Quadlet。
- 常用软件版本对照表 — 跨发行版全量版本对照(自动更新)
- EL 10 变化总览 — 包管理与模块化等其余变化
- EL 10:后量子加密 — OpenSSL 3.5 的安全侧变化
- EL 9:工具链全面更新 — 上一代的换代内容