Skip to content
Search RunEntLinux

Searches general documentation on RunEntLinux. Each distribution has its own documentation search.

    Browse this documentation

    EL 10: A new toolchain

    A major release means a wholesale refresh of the base toolchain. EL 10 moves the kernel to 6.12 LTS, the compiler to GCC 14, the system Python to 3.12, and glibc to 2.39, with Podman 5 on the container side — while the package manager stays on the DNF 4 line (4.20), so day-to-day commands feel unchanged.

    Every EL major release aligns with a set of upstream long-term-support versions, and EL 10 aligns with the 2024–2025 upstream mainlines. For users the changes cluster in three places:

    • Build side: GCC 14 plus new binutils and glibc headers turn code that “used to compile” into build failures;
    • Runtime side: the system Python jumps three minor versions, so old scripts need validation;
    • Container side: Podman 5 makes pasta the default rootless network backend and recommends Quadlet for systemd integration.

    Meanwhile the package manager is still DNF 4 (currently 4.20), not DNF 5: dnf install, dnf config-manager, and friends keep their EL 9 syntax.

    ComponentEL 9EL 10Notes
    kernel5.146.12LTS; much better new-hardware support
    GCC1114stricter default diagnostics; C23
    glibc2.342.39
    Python (system default)3.93.12distutils and other old modules removed
    OpenSSL3.0.x3.5.xadds post-quantum algorithm support
    Podman4.x5.xrootless networking defaults to pasta
    Package managerDNF 4DNF 4.20still DNF 4, not DNF 5

    For exact current versions in each distribution’s official repositories, see the package version matrix (synced at build time).

    • In-house software and kernel modules: GCC 14 promotes implicit function declarations, incompatible pointer types, and friends from warnings to default errors. Old C code and out-of-tree kernel modules may fail on the spot; fix the source, or downgrade with -Wno-error=… as a stopgap (not long term).
    • Python workloads: 3.9 → 3.12 spans three minor versions; distutils is gone and some stdlib behavior changed. The EL 10 system Python is for system components only — keep application code in a venv.
    • Container workflows: podman generate systemd is deprecated in favor of Quadlet; rootless networking defaults to pasta, so scripts that assumed slirp4netns behavior need a check.
    • Binary compatibility: glibc remains backward compatible, so old binaries usually run; but anything linked against OpenSSL 1.x needs revalidation.
    Print the key versions
    uname -r
    gcc --version | head -1
    python3 --version
    ldd --version | head -1
    podman --version
    1. Before upgrading, do a full build of your in-house components in an EL 10 container or VM;
    2. Run Python regression suites under 3.12 in a venv;
    3. Move container systemd integration to Quadlet.