CentOS为何停止维护?Rocky Linux和AlmaLinux的由来
了解 Red Hat Linux 如何分化为 Fedora 与 RHEL,CentOS 为何存在,以及 2020 年 12 月 8 日宣布 CentOS Linux 8 提前于 2021 年底停更后,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 并非从零开始编写这个系统,从贝尔实验室 Unix 到免费 Linux 内核的发展历程说明了它打包的软件为何可以免费放入盒装产品中销售。最后一个版本 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 随后跟进。systemd 是最清晰的例子:它于 2011 年 5 月成为 Fedora 的默认 init 系统,直到 2014 年 6 月 RHEL 7 发布时才进入 RHEL。因此,关于替换 SysV init 的争论早在它进入企业服务器之前几年,就已经在上游得到解决。
这种拆分留下了一个空缺。许多人希望获得 RHEL 的十年生命周期,但不想按服务器付费;Fedora 无法满足这一需求,因为 Fedora 版本的支持周期大约只有十三个月。
为何可以免费重建 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 版本于 2004 年 5 月 14 日发布,版本号为 2,因为它基于 RHEL 2.1AS 构建。
CentOS 的吸引力在于其生命周期。每个 CentOS 版本都遵循 RHEL 的十年支持周期,而且免费。托管公司将其用于默认镜像,大学在集群上运行它,设备厂商将其随产品一起发布,控制面板也默认系统中已安装 CentOS。如果您在大约 2006 年到 2020 年期间租用虚拟专用服务器,操作系统列表中通常会有 CentOS,而且它经常是默认选项。
CentOS Linux 7 展示了这一承诺确实得到了兑现。它于 2014 年 7 月 7 日发布,安全支持持续到 2024 年 6 月 30 日,距离完整十年仅差几天。正因如此,人们才愿意围绕下一个版本制定为期十年的计划。
2014 年 CentOS 加入 Red Hat 后发生了什么
2014 年 1 月 7 日,Red Hat 和 CentOS Project 宣布双方将展开合作。当时 Red Hat 的首席技术官 Brian Stevens 和 CentOS 首席开发者 Karanbir Singh 都在公告中发言。Red Hat 提供了员工和基础设施,几名 CentOS 核心开发者成为 Red Hat 员工,项目也成立了正式的治理委员会。
对用户而言,可见的影响是积极的。每次 RHEL 发布后,构建版本都能更快提供。源代码迁移到了 git.centos.org。特别兴趣小组在基础发行版之上提供了额外内容,例如虚拟化和存储技术栈。
结构上的变化不太明显,但这正是六年后产生影响的因素。负责重建 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。
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。没有功能被移除,代码质量也没有变差。用户失去的是一个已经据此做出安排的日期,而相关机器已经投入生产,留给他们的通知时间略多于 1 年。跨整个服务器集群迁移操作系统属于计划内工作,但这次变成了附带截止日期的计划外工作。
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 于 2024 年 12 月 12 日发布,支持周期约为五年,而 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 发布了候选版本;随后在 2021 年 6 月 21 日发布首个稳定版本 Rocky Linux 8.4 "Green Obsidian"。
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 Linux 源自 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 年 7 月,由 benny Vasquez 主持的董事会放弃了与 RHEL 一一对应的目标,改为采用应用程序二进制接口(ABI)兼容性。ABI 兼容性意味着,为 RHEL 构建的软件无需修改即可在 AlmaLinux 上运行,但两者不必是完全相同的构建版本。这一调整换来了更大的自由。AlmaLinux 可以在 RHEL 之前发布修复,也可以继续支持 RHEL 已停止支持的硬件。
另外两家大型厂商也采取了行动。2023 年 7 月 11 日,SUSE 表示将基于公开可用的 RHEL 代码创建分支,并投入超过一千万美元开发兼容发行版。Oracle 自 2006 年起就将 Oracle Linux 作为兼容 RHEL 的产品发布,也在同一周公布了自己的回应。
2023 年 8 月 10 日,CIQ、Oracle 和 SUSE 宣布成立 Open Enterprise Linux Association(OpenELA)。这是一个行业协会,只有一项任务:发布企业 Linux 源码,使兼容 RHEL 的发行版能够继续构建,并确保这些源码可以自由再分发。2023 年 11 月,该协会公布了治理文件和代码可用性。AlmaLinux 没有加入,这与其 ABI 决策一致,因为它不再需要精确的源码供给。
今天在服务器上应该选择哪个发行版?
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 中,这一项决定会直接影响系统能否安装。如果你正在为特定机器权衡这一取舍,VPS 两个重构版本的对比会并列说明兼容性承诺和 CPU 基线。安装完成后仍会遇到其他差异,在 Rocky Linux 或 AlmaLinux 上安装 Docker Engine通常是用户首先遇到的问题,因为 podman 已经占用了 docker 命令,而 SELinux 对 bind mount 的重新标记方式是 Ubuntu 指南通常不会提到的。
这条时间线可以从 4 个实际角度理解:
- 如果你需要厂商关系,请购买 RHEL。订阅本身就是产品,并包含任何重构版本都无法提供的认证和支持服务。
- 如果你需要 CentOS Linux 曾经提供的系统,AlmaLinux 和 Rocky Linux 都能满足要求,而且免费提供 10 年支持窗口。如果你从 Debian 或 Ubuntu 迁移过来,日常使用中主要需要适应包管理器,因此第一周应随手备有每条 apt 命令对应的 dnf 命令。
- 如果你编写的软件必须在 RHEL 上运行,或者希望补丁能够进入 RHEL,CentOS Stream 就是正确的目标,较短的支持窗口是相应代价。
- 如果以上情况都不适用,Debian 生态会以自己的方式回答相同的生命周期问题,而Ubuntu LTS 与 interim 版本之间的选择就是你在该生态中需要做出的对应决定。
这条时间线背后的重点是治理,而不是代码。CentOS Linux 本身是优秀的软件,但它仍然提前结束了生命周期,因为它由复制其产品的公司提供资金。当你为预计运行 10 年的机器选择发行版时,应了解谁为它提供资金,以及谁拥有商标。AlmaLinux 将商标置于一个基金会名下。Rocky Linux 将商标置于 RESF 名下,CIQ 是其商业赞助方。两个项目都会公开这些信息,而 CentOS 用户在 2019 年无法核查到这么多信息。
如果你租用服务器,这个问题会直接影响你。在非托管 VPS 上,你需要自行应用更新,因此提前结束生命周期意味着你需要规划迁移,并投入自己的时间。迁移工作的常规部分不需要你一直操作终端,将 dnf-automatic 设置为定时安装安全更新可以让你把精力集中在确实需要人工处理的迁移上。安装补丁不等于系统已经运行该补丁,因此在宣布机器已完成修补前,应确认哪些更新需要重启,哪些只需要重启服务。如果你仍在更宽泛的层面考虑操作系统问题,应先阅读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?
December 8, 2020 公告中给出的理由是,项目的未来在于 CentOS Stream;仅复制 RHEL 的重建版本无法让社区参与项目方向。许多用户也认为其中存在商业动机,因为 CentOS Linux 是 Red Hat 销售产品的免费版本,并且被部署在本来能够购买订阅的组织的生产环境中。Red Hat 自己发布的文章讨论的是开发模式,而不是这种解读。