Skip to content

RHEL Ecosystem & CentOS Migration Guide

Reference for understanding the RHEL/CentOS family tree and choosing a migration path for machines currently running CentOS 7 (the distribution this repo was originally developed against). For toolchain-level details (glibc, gcc, kernel versions per distro) see linux-toolchain-baseline.md.


The family tree

Fedora  (bleeding-edge upstream)
CentOS Stream  ←── RHEL minor-release preview / upstream development branch
RHEL  (Red Hat's paid enterprise product)
  ├── AlmaLinux  (community RHEL-compatible, CloudLinux-backed)
  ├── Rocky Linux (community RHEL rebuild, CentOS co-founder lineage)
  └── Oracle Linux (Oracle-backed; choice of RHEL-compat or UEK kernel)

Key shift (2020): Red Hat redirected the CentOS Project. The old model was RHEL → CentOS Linux (RHEL rebuild released after RHEL). The new model makes CentOS Stream a pre-RHEL development branch — closer to Fedora in spirit.


EOL timeline

Distro EOL
CentOS Linux 6 2020-11-30
CentOS Linux 7 2024-06-30 (reached)
CentOS Linux 8 2021-12-31 (cut short)
CentOS Stream 8 2024-05-31
CentOS Stream 9 ~2027 (follows RHEL 9 lifecycle)
CentOS Stream 10 ~2030 (follows RHEL 10 lifecycle)
RHEL / Alma / Rocky 8 2029-05
RHEL / Alma / Rocky 9 2032-05

CentOS Linux 8 was cut 4 years early (announced 2020, EOL 2021). There is no "CentOS Linux 9" — the equivalent stable community rebuilds are AlmaLinux 9 and Rocky Linux 9.


What each distro is now

RHEL

Paid enterprise product from Red Hat. Required if your org has a subscription or a compliance mandate. Most "RHEL-compatible" guarantees are stated relative to RHEL's ABI.

CentOS Stream

No longer a stable-release RHEL clone. It is the upstream development branch that feeds into the next RHEL minor release:

Fedora → CentOS Stream → RHEL → Alma/Rocky

Useful for developers who want to preview RHEL changes or contribute upstream. Not recommended as a drop-in CentOS 7 replacement for production servers.

AlmaLinux

Community-driven RHEL-compatible distro backed by CloudLinux. Primary goal is filling the gap left by CentOS Linux. Since RHEL 9.2, AlmaLinux's strategy shifted from "byte-for-byte clone" to "ABI/application compatibility" (see AlmaLinux FAQ). Practically, this matters very rarely. Large, active community; backed by a commercial entity.

Rocky Linux

Community RHEL rebuild founded by Gregory Kurtzer (CentOS co-founder). Closest in spirit to the original CentOS Linux "RHEL rebuild released after RHEL" philosophy. Strong community; well-regarded in HPC and research environments.

Oracle Linux

Oracle-backed RHEL-compatible distro. Offers a choice between a RHEL-compatible kernel and Oracle's own UEK (Unbreakable Enterprise Kernel). Adoption usually follows organizational Oracle relationships.


Migration paths from CentOS 7

CentOS Linux 7 → CentOS Linux 8/9 does not exist. Choose from:

Goal Path
Paid enterprise support / compliance RHEL 8 or 9
Free, stable, closest to old CentOS Rocky Linux 8/9 or AlmaLinux 8/9
Staying in Oracle ecosystem Oracle Linux 8/9
RHEL upstream dev / preview CentOS Stream 9/10 (not production-stable)

In-place vs. fresh install

There is no supported in-place upgrade from CentOS 7 to any EL8/EL9 variant. Options:

  • Fresh install + re-apply dotfiles: recommended. Boot from ISO, then chezmoi init + ansible on the new OS. Typically takes 30-60 min.
  • Leapp migration (Red Hat's official in-place tool): officially supported for RHEL → RHEL upgrades. Community-backed Leapp paths exist for CentOS 7 → AlmaLinux/Rocky but are higher-risk on customized systems.
  • Stay on CentOS 7 using containers: build-time isolation via Apptainer / Docker. Useful when the OS itself cannot be migrated immediately. See linux-toolchain-baseline.md § Apptainer.

Compatibility note for dotfiles

This repo's configs were developed on CentOS 7 (glibc 2.17, gcc 4.8.5, kernel 3.10). After migrating to EL8/EL9 the main differences are:

Area EL7 EL8/9
Default Python 2.7 (python) 3.x only; no python symlink by default
System Python 3 3.6.8 (EPEL) 3.9 (EL8) / 3.11+ (EL9)
Package manager yum dnf (yum is a dnf alias)
ntp service ntpd chrony
ifconfig / netstat in base in net-tools (install manually)
SCL (scl enable) common pattern replaced by module streams

The chezmoi templates in this repo use .chezmoi.os and version-sniff patterns; they do not hard-code CentOS 7 paths, so re-applying on EL8/9 should work without modification.


Quick-reference: choosing between Alma and Rocky

Both are solid choices. For this repo's use case (HPC / compute nodes / single-developer workstations), the practical differences are minor:

AlmaLinux Rocky Linux
Backing org CloudLinux (commercial) Rocky Enterprise Software Foundation
ABI compatibility stance "ABI compatible" (since 9.2) "1:1 RHEL rebuild"
Community size Large Large
HPC community adoption Common Very common (RHEL co-founder heritage)
Verdict Either is fine Slight edge in HPC/research contexts

If your cluster already uses one, stay with it. If starting fresh, Rocky Linux 9 is a reasonable default.


See also