SSD Nodes Learn 🎉 VPS $5.50/月起
指南 Matt Connor作者: Matt Connor

Red Hat、CentOS、Rocky 和 AlmaLinux 有何关系?

了解 Red Hat Linux 如何分化为 Fedora 与 RHEL,CentOS 为何出现,以及 2020 年 CentOS Stream 变更为何提前终止 CentOS Linux 8 的支持,并催生 Rocky Linux 和 AlmaLinux。

为什么会有两个免费的 Red Hat Enterprise Linux 重建版

Rocky Linux 和 AlmaLinux 的存在,是因为 Red Hat 终止 CentOS Linux 的时间早于用户原本规划的日期。CentOS 是 Red Hat Enterprise Linux(RHEL)的免费、去品牌化重建版,并提供相同的长期支持周期。2020 年 12 月 8 日,CentOS Project 宣布 CentOS Linux 8 将在 2021 年底停止维护,而不是持续到 2029 年。该公告发布后的一周内,两个替代项目相继宣布成立,并且至今仍在发布版本。

只有了解 CentOS 的性质,以及商业产品为何可以存在免费副本后,这项公告才容易理解。这个过程始于 2003 年。

2003 年 Red Hat Linux 的去向:Fedora 和 RHEL

Red Hat 最初的产品是名为 Red Hat Linux 的盒装发行版。第一个非测试版于 1995 年 5 月发布。最后一个版本 Red Hat Linux 9 于 2003 年 3 月 31 日发布,并于 2004 年 4 月 30 日结束生命周期。

到那时,Red Hat 已开始向企业销售产品。企业需要盒装产品无法提供的特性:版本多年保持稳定,同时获得安全修复,且不会意外升级。Red Hat 将其构建为 Red Hat Linux Advanced Server,并于 2002 年 3 月将其发展为 Red Hat Enterprise Linux 2.1。RHEL 按订阅模式销售,按每个系统每年收费。订阅包含更新和支持,也包含认证。硬件厂商和商业软件厂商会专门针对 RHEL 进行测试,并在其支持条款中明确列出 RHEL。

当时,免费产品线没有明确定位,因此 Red Hat 将其与一个外部社区项目合并。Fedora Project 和 Red Hat Project 于 2003 年 9 月 22 日正式合并。Fedora 成为免费且更新快速的发行版,新功能会优先在其中发布。RHEL 则成为基于 Fedora 构建、更新较慢且付费的发行版。此后的开发一直沿用这一方向:Fedora 先行,RHEL 跟随。

这种拆分留下了一个空缺。许多人希望获得 RHEL 的十年生命周期,但不想按服务器付费。Fedora 无法满足这一需求,因为每个 Fedora 版本大约只支持 13 个月。

为何可以免费重建 RHEL?

RHEL 几乎完全由自由许可证授权的软件构建,其中 GNU General Public License(GPL)最为关键。该许可证要求,任何获得二进制文件的人都必须能够获得相匹配的源代码。Red Hat 通过公开渠道履行这一义务:先是在公共服务器上发布源 RPM(SRPM,即每个组件的打包源代码),后来又将其发布到 git.centos.org 代码仓库。

源代码并不等于完整产品。RHEL 有两部分始终不能免费复制。Red Hat 商标归 Red Hat 所有,因此重建者必须删除所有徽标和所有名称引用。付费服务也仍然受限于付费墙之后:更新服务器、支持合同、认证流程,以及说明每项修复内容的勘误。

重建方法很容易描述。获取已发布的源代码,删除品牌内容,重新构建,然后发布结果。目标是实现逐个错误兼容,也就是说,重建版本会携带与 RHEL 相同的补丁,并表现出相同的行为,包括相同的错误。这种精确性正是关键,因为商业软件会针对 RHEL 进行认证。如果重建版本的行为完全一致,该软件就能在其上运行,但供应商不会为此提供支持。

CentOS 的用途是什么?

CentOS 是 Community ENTerprise Operating System 的缩写。它源自 Gregory Kurtzer 于 2002 年启动的 cAos Linux 项目。第一个 CentOS 版本于 May 14, 2004 发布,版本号为 2,因为它基于 RHEL 2.1AS 构建。

CentOS 的吸引力在于其生命周期。每个 CentOS 版本都遵循 RHEL 十年的支持周期,而且免费。托管公司将其用于默认镜像,大学在集群上运行它,设备厂商将其随产品一起发布,控制面板也默认系统中已安装 CentOS。如果您在大约 2006 到 2020 年期间租用虚拟专用服务器,操作系统选项中通常会有 CentOS,而且它往往是默认选项。

CentOS Linux 7 说明这一承诺确实得到了兑现。它于 July 7, 2014 发布,安全支持持续到 June 30, 2024,比完整十年少几天。正因为有这样的记录,人们才放心根据下一个版本制定十年期计划。

2014 年 CentOS 加入 Red Hat 后发生了什么

2014 年 1 月 7 日,Red Hat 和 CentOS 项目宣布合作。Red Hat 当时的首席技术官 Brian Stevens 与 CentOS 首席开发者 Karanbir Singh 都在公告中发言。Red Hat 提供了员工和基础设施,几名 CentOS 核心开发者成为 Red Hat 员工,项目也成立了正式的治理委员会。

对用户而言,能直接看到的影响是积极的。每次 RHEL 发布后,构建版本都能更快提供。源代码迁移到了 git.centos.org。特别兴趣小组在基础发行版之上提供了额外内容,例如虚拟化和存储组件。

结构上的变化不太明显,但这正是 6 年后产生影响的变化。负责重建 RHEL 的项目,获得了销售 RHEL 的公司提供的资金,并且其大部分人员也由该公司配备。这种安排并未要求 Red Hat 继续维护这个重建项目。

CentOS Linux 8 为什么在 2021 年结束?

CentOS Linux 8 于 2019 年 9 月 24 日发布。RHEL 8 支持至 2029 年 5 月 31 日,因此人们原本认为 CentOS Linux 8 也会支持到 2029 年。

2020 年 12 月 8 日,Rich Bowen 在 CentOS 博客发布了《CentOS Project shifts focus to CentOS Stream》。CentOS Linux 8 将于 2021 年 12 月 31 日结束。CentOS Linux 7 将保留原定的 2024 年 6 月 30 日结束日期。给出的原因是,项目的未来属于 CentOS Stream。

ChartCentOS Linux 8 support window in years, announced at release versus delivered
The data behind this chart
[
  {
    "label": "Announced at release, September 2019",
    "support_window": 9.7
  },
  {
    "label": "Delivered, ended December 2021",
    "support_window": 2.3
  }
]

CentOS Linux 8 发布时,预计支持周期约为 9.7 年。实际提供了约 2.3。没有功能被移除,代码质量也没有下降。用户失去的是一个已经据此作出计划的日期,而这些机器已经处于生产环境中,并且只提前一年多收到通知。跨整个服务器集群迁移操作系统需要提前规划;这次迁移却变成了带有明确截止日期的计划外工作。

CentOS Stream 到底是什么?

许多文章仍将 CentOS Stream 描述为取消 CentOS Linux 后推出的产品。时间线没有错,但这种描述不准确,因为这两个产品的方向正好相反。

CentOS Linux 位于 RHEL 的下游。Red Hat 发布 RHEL 次要版本后,CentOS 再对其进行重构。副本总是晚于原版到达。

CentOS Stream 位于 RHEL 的上游。它是组装下一个 RHEL 次要版本的公开分支。代码和软件包从 Fedora 流入 CentOS Stream,再进入 RHEL。因此,软件包会先出现在 Stream 中,之后才进入某个 RHEL 次要版本。Stream 持续交付,不会像已发布的 RHEL 那样在两个次要版本之间保持不变。

因此,Stream 可以承担 CentOS Linux 无法承担的工作。如果您维护的软件必须持续兼容下一个 RHEL 次要版本,Stream 可以提前数月展示该版本。如果您希望修复 RHEL 中的错误,Stream 是一个可以提交补丁的地方,而下游重构版本从未提供过这种途径。Red Hat 在 2020 年的观点是,这会将被动的副本转变为社区实际可以修改的发行版。

对于 CentOS Linux 用户想要的用途,Stream 仍然不是理想的替代品,其支持周期也说明了这一点。CentOS Stream 10 于 December 12, 2024 发布,支持周期约为五年,而 RHEL 的支持周期为十年。按十年计划运行服务器集群的团队,并没有获得该计划的更快版本。他们得到的是一个用途不同的产品。

Rocky Linux 和 AlmaLinux 的起源

Rocky Linux 于 2020 年 12 月 8 日发布公告,与 CentOS 公告在同一天。公告由 Gregory Kurtzer 发布,他创建了 CentOS 的前身项目。该名称用于纪念 CentOS 的早期联合创始人 Rocky McGaugh。该项目由 Rocky Enterprise Software Foundation (RESF) 管理,主要商业支持者是 CIQ。这是一家由 Kurtzer 创立的公司。2021 年 4 月底发布了候选版本,首个稳定版本 Rocky Linux 8.4 "Green Obsidian" 于 2021 年 6 月 21 日发布。

AlmaLinux 源于 CloudLinux。这家公司此前已经向托管服务提供商销售基于 RHEL 的发行版。2020 年 12 月 15 日,CloudLinux 承诺每年投入超过一百万美元,用于构建免费的 RHEL 重构版。该项目当时的代号是 Project Lenix。AlmaLinux 这一名称于 2021 年 1 月 12 日公布,测试版于 2 月 1 日发布,AlmaLinux 8.3 "Purple Manul" 于 2021 年 3 月 30 日发布。同一天,项目所有权移交给 AlmaLinux OS Foundation。这是一家非营利组织,负责持有商标并管理项目董事会。

两个项目通过不同的治理方式解决了同一个问题。Rocky 由 CentOS 的创建者发起,并围绕项目成立了一家公司。AlmaLinux 则由一家公司发起,并在发布时将商标交给了一个基金会。在最初两年中,两者在实际使用上的差异很小,并且都提供了 CentOS Linux 用户失去的内容。

Red Hat 在 2023 年对 RHEL 源代码所做的更改

2023 年 6 月 21 日,时任 Red Hat 核心平台副总裁的 Mike McGrath 发布了《推动 CentOS Stream 的演进》。其中的关键表述是:CentOS Stream 将成为公开发布 RHEL 相关源代码的唯一仓库。此前推送到 git.centos.org 的 RHEL 源代码不再继续推送到该处。

Red Hat 客户和合作伙伴仍可通过客户门户访问 RHEL 源代码。这符合 GPL 的要求,因为相关义务是针对获得二进制文件的人员履行的。变化在于公开获取源代码的途径。某个 RHEL 次要版本中具体发布了哪些内容的逐包记录,不再公开发布。而且 CentOS Stream 位于 RHEL 之前,而不是与 RHEL 处于同一版本线上,因此仅依据 Stream 进行重建,无法准确复现某个已经发布的 RHEL 次要版本。

Red Hat 的立场是,Stream 属于上游,公开源代码也应归属于上游。重建项目的立场是,这一更改移除了它们自 2004 年以来一直依赖的材料。这两种描述都准确。双方争议的是许可证的目的,而不是许可证的具体规定。

重建项目如何回应,以及 OpenELA 是什么

Rocky Linux 首先作出回应。在一篇日期为 June 29, 2023 的文章中,该项目表示,将继续通过无需额外协议的途径获取 RHEL 源码:Red Hat 的 Universal Base Image(UBI)容器镜像,以及按使用量付费的公有云 RHEL 实例。任何获得这些二进制文件的人,都依据 GPL 享有获取相应源码的权利。Rocky Linux 仍以逐个版本跟随 RHEL 为目标。

AlmaLinux 的回应有所不同。2023 年 July,其董事会在 benny Vasquez 主持下放弃了与 RHEL 一对一对应的目标,改为采用应用程序二进制接口(ABI)兼容性。ABI 兼容性意味着,为 RHEL 构建的软件无需修改即可在 AlmaLinux 上运行,但两者不必是完全相同的构建版本。这一调整带来了更大的自主性。AlmaLinux 可以在 RHEL 之前发布修复,也可以继续支持 RHEL 已停止支持的硬件。

两家更大的厂商也采取了行动。July 11, 2023,SUSE 表示将基于公开可用的 RHEL 进行分支开发,并投入超过 ten million US dollars 开发兼容发行版。Oracle 自 2006 年起就将 Oracle Linux 作为兼容 RHEL 的产品发布,也在同一周公布了自己的回应。

August 10, 2023,CIQ、Oracle 和 SUSE 宣布成立 Open Enterprise Linux Association(OpenELA)。这是一个行业协会,职责只有一项:发布企业 Linux 源码,使兼容 RHEL 的发行版能够继续构建,并确保这些源码可自由再发布。November 2023,该协会公布了治理文件和代码可用性。AlmaLinux 没有加入。这符合其 ABI 决策,因为它已不再需要精确的源码供给。

今天应在服务器上选择哪个发行版?

ChartSupport window in years published by each project for its version 10 release, as of August 2026
The data behind this chart
[
  {
    "distro": "RHEL 10",
    "support_window": 10,
    "notes": "Released May 2025, supported to May 2035"
  },
  {
    "distro": "AlmaLinux 10",
    "support_window": 10,
    "notes": "Released May 2025, supported to May 2035"
  },
  {
    "distro": "Rocky Linux 10",
    "support_window": 10,
    "notes": "Released June 2025, supported to May 2035"
  },
  {
    "distro": "CentOS Stream 10",
    "support_window": 5,
    "notes": "Released December 2024, supported to May 2030"
  }
]

10 版本的发布情况说明了最终走向。RHEL 10 于 2025 年 5 月 20 日发布,AlmaLinux 10“Purple Lion”于 2025 年 5 月 27 日发布,Rocky Linux 10“Red Quartz”于 2025 年 6 月 11 日发布。这些版本都提供 10 年的支持窗口。CentOS Stream 10 提供 5 年支持,这明确表明它属于开发分支,而不是固定不变的目标版本。

这些项目之间也开始出现可能影响实际使用的差异。RHEL 10 将硬件基线提高到 x86-64-v3。这一微架构级别要求 CPU 支持 AVX2 等较新的指令。Rocky Linux 10 采用了相同基线,并移除了对 x86-64-v2 的支持。AlmaLinux 10 默认提供 x86-64-v3,同时为较旧的处理器提供独立的 x86-64-v2 构建版本。在运行于较旧宿主机 CPU 上的廉价 VPS 中,这一项决定可能直接影响系统能否安装。

从这一时间线可以得出四点实际结论:

  • 如果需要厂商关系,请购买 RHEL。订阅本身就是产品,并提供任何重构版本都无法提供的认证和技术支持渠道。
  • 如果希望获得 CentOS Linux 原有的使用体验,AlmaLinux 和 Rocky Linux 都能满足这一需求,且免费提供十年支持窗口。
  • 如果编写的软件必须在 RHEL 上运行,或者希望补丁进入 RHEL,CentOS Stream 才是正确目标,而较短的支持窗口就是相应代价。
  • 如果以上情况都不适用,Debian 生态会以自己的方式回答相同的生命周期问题,而 Ubuntu LTS 与 interim releases 之间的选择 就是你在该生态中遇到的对应决策。

这条时间线背后的教训涉及治理,而不只是代码。CentOS Linux 曾是优秀的软件,但仍然提前结束,因为它由其所复制的产品所属公司提供资金支持。当你为预计运行十年的机器选择发行版时,应了解谁为它提供资金,以及谁拥有商标。AlmaLinux 将商标保留在一个基金会名下。Rocky 将商标保留在 RESF 名下,并由 CIQ 作为商业赞助方。两个项目都会公开说明这些信息,这比 CentOS 用户在 2019 年能够核实的内容更多。

如果你租用服务器,这一点会直接影响你。在 非托管 VPS 上,更新需要由你自行应用,因此生命周期提前结束就意味着迁移计划和投入的时间都由你负责。如果操作系统的选择仍需从更广的范围考虑,那么应先阅读 Linux 与 Windows Server 的比较,再处理上述问题。

FAQ

CentOS 已经终止了吗?

CentOS Linux 已停止维护。CentOS Linux 8 于 December 31, 2021 结束支持,CentOS Linux 7 于 June 30, 2024 结束支持,因此两者都不再接收安全更新。CentOS Project 本身仍在继续,并推出 CentOS Stream。这是不同的产品:它是为 Red Hat Enterprise Linux 提供内容的公开开发分支。如果服务器仍运行 CentOS Linux,则系统未打补丁。常见的迁移目标是 AlmaLinux 和 Rocky Linux。

CentOS Stream 与 CentOS Linux 有什么区别?

区别在于开发方向。CentOS Linux 位于下游:Red Hat 发布 RHEL 次版本后,CentOS 再进行重建。CentOS Stream 位于上游:下一个 RHEL 次版本在这里组装,因此其内容会先于 RHEL 到达,而不是晚于 RHEL。Stream 会持续更新,而不是冻结;CentOS Stream 10 的支持周期约为五年,而 RHEL 的支持周期为十年。

应该选择 Rocky Linux 还是 AlmaLinux?

两者都免费,都与 RHEL 保持紧密同步,并且都提供十年的支持周期,因此对大多数服务器而言,选择任意一个都可以。实际差异来自两者在 2023 年作出的决定。Rocky 的目标是逐个版本匹配 RHEL,并通过 UBI 容器镜像和公有云实例获取源代码后进行重建。AlmaLinux 的目标是实现 ABI 兼容,因此可以更早发布补丁,并继续支持 RHEL 已停止支持的硬件。AlmaLinux 10 提供面向旧 CPU 的 x86-64-v2 构建版本,而 Rocky Linux 10 要求 x86-64-v3。因此在较旧硬件上,这一项差异可能直接决定选择。

Red Hat 在 2023 年违反 GPL 了吗?

没有法院对此作出这样的认定,而且 GPL 的义务对象是获得二进制文件的人。Red Hat 仍向客户提供对应的源代码。争议在于后续会发生什么:订阅可能无法续订,而重建项目认为,这会对其行使许可证授予的再分发权构成压力。因此,Rocky 转而采用不附带订阅协议的源代码获取途径,OpenELA 也因此成立并公开发布源代码。

Red Hat 为什么要终止 CentOS Linux?

2020 年 December 8 日公告给出的理由是,项目的未来是 CentOS Stream;如果重建版本只是复制 RHEL,社区就没有参与影响项目的途径。许多用户也认为其中存在商业动机,因为 CentOS Linux 是 Red Hat 销售产品的免费版本,并且已在有能力购买订阅的组织中用于生产环境。Red Hat 自己发布的文章讨论的是开发模式,而不是这种解读。