CentOS 8退役倒计时,开发者们又吵起来了

作者 核子可乐 褚杏娟

CentOS 8将在2021年底走完自己的生命周期,这远远早于最初定下的2029年。虽然该消息早在去年12月就已经公布,但不少开发者仍对此感到无所适从。运行CentOS 8的系统不会一夜之间崩溃,只是从明年年初开始一切安全及其他更新都将不再继续。CentOS项目表示用户应把CentOS Stream作为替代方案,但用户们仍有很多自己的顾虑。

突如其来的终结

CentOS起源于CAOS Linux的构建,是一种基于RPM的Linux发行版,与其上游源Red Hat Enterprise Linux (RHEL)兼容,由Gregory Kurtzer于2002年启动。

2004年5月,CentOS的第一个版本发布,编号为CentOS 2,从RHEL 2.1 AS派生而来。此后,CentOS一直保持新版本的更新迭代。截至2015年12月,CentOS Alt Arch 7版本可用于IA-32架构、Power ISA,以及ARM架构的ARMv7hl和AArch64变体。2019年9月24日,CentOS 8发布。从该版本开始,CentOS正式支持x86-64、ARM64和POWER8架构。在此期间,CentOS在2014年宣布加入Red Hat,同时独立于RHEL。

CentOS产品生命周期

按照计划,CentOS 8将在2029年结束服务,但在2020年12月,Red Hat单方面宣布将在2021年结束对CentOS 8的支持,CentOS 7将作为长期支持版本被支持到其生命周期结束,而其工作的重点也将从CentOS Linux转到CentOS Stream上。

这一消息在当时便引起了轩然大波。

CentOS近年来一直占据主导地位。2018年,CentOS占受访者的39%,而Ubuntu为35%。CentOS份额在2019年增加到40%,Ubuntu仍然位居第二,为35%。2020年市场发生了翻天覆地的变化,随着Ubuntu上升至40%,CentOS下降至28%。根据W3techs数据显示,目前10.5%的受访者选择CentOS,选择Ubuntu占33.4%,而选择RHEL的仅0.9%。

“CentOS生命的终结不仅对我们的公司和客户,甚至行业中的几乎所有人都产生了负面影响,”Kurtzer表示。

在此之前,很多企业基于Red Hat给出的10年产品生命周期承诺而选择了CentOS 8。但发布还不到三年,Red Hat便宣布停止支持,这对一直依赖CentOS作为上游的企业产生了很大的影响。2020年12月,欧洲核子中心和费米实验室发布联合声明表示,该决定可能对全世界的粒子物理界产生显著影响。

“CentOS董事会无法决定Red Hat团队的行为。”CentOS董事会成员Brian Exelbierd说道。

如何迁移并不简单

随着CentOS 8结束服务日期的临近,展开相关切换工作迫在眉睫。从纯技术层面出发,不少开发者认为转移至CentOS Stream 8才是正确的前进方向,但如何转移却引发了开发者们的强烈讨论。

有开发者表示,将用户无缝转移至Stream是最好的办法,“这表明我们有信心让Stream支持大部分CentOS用例,同时为整个互联网提供有力的保护。”

但有不少开发者指出了这种处理方式的问题。开发者Bowen评论道:

我虽然同意,但这毕竟是一次升级。我估计从CentOS Linux 8自动转移至CentOS Stream 8会激起那些认定Stream只是alpha/beta/测试/不完善/非稳定等其它什么版本的用户们的强烈反对。这种粗暴的处理方式肯定要爆雷。

从统计数据来看,自从CentOS 8宣布调整生命周期以来,已经有大量用户部署了全新的CentOS系统。但开发者Stephen John Smoogen认为,“尽管目前约45万套CentOS 8系统大部分都能在CentOS Stream上运行良好,但我们并不清楚其中哪些只是无关紧要的广告Web服务器、哪些正控制着得克萨斯州的炼油厂或者水电大坝。”

开发者Josh Boyer表示,实际实践中的问题太多了,比如内核、内部策略合规性或者其他原因,这一切都会在自动迁移过程中造成负面影响。“我们应该鼓励并引导人们转向CentOS Stream,努力整理出易于使用和阅读的工具及文档,但不应该简单粗暴地单方面强制推动迁移。”

而开发者Alex Iribarren担心12月31号准时“拔掉插头”太过匆忙,建议“考虑到那段时间正好是假期,最好是能再延后一个月左右。”CentOS经理Johnny Hughes也表示,考虑到当时正好是新年假期,最好能推迟计划,并且也不需要额外开发任何安全更新,合理的选择是避过人们居家休息的时间。虽然具体日期还没有确定,但他还是对整个计划提出了自己的构想:

我们的目标是,只要RHEL 8.5能在2021年12月31日之前发布,我们就要先导入8.5版本文件、之后删除镜像内的CentOS Linux 8。我们不会在2021年12月31日之后发布的任何RHEL源代码更新添加至CentOS Linux8当中。

这个最终版本将至少归档在vault.centos.org/8.5.xxxx/(其中xxxx为日期)。当然,如果RHEL 8.5版本实际在2022年1月1号之后才发布,那我们就不再把它纳入CentOS Linux 8。

从2022年1月1日起,直到RHEL 8发布后的CentOS Stream 8五年生命周期(即2024年5月31日)到期止,我们将持续为CentOS Stream 8构建各类新项目。

但Carl George希望能把计划订得更激进一些。他认为Stream实际上就是CentOS 8的延续,所以也许“我们应该让mirrorlist.centos.org继续通过8-stream repo响应相应请求,借此将一切剩余的CentOS Linux 8系统转换为CentOS Stream 8。”这个目标可以在生命周期结束时完成,也可以再适当延后一到三个月。George之所以提出第三个选项,是因为他担心很多用户并不知道CentOS 8生命周期结束、特别是不再发布安全更新这件事,最终有可能导致严重的安全事故。

Fabian Arrotin将CentOS用户分成两类:一类是关注公告且制定了明确计划的用户,另一类则是完全不关心这方面消息的用户。他认为,对于前者,George提出的自动切换选项不会产生多大影响,但对于压根不清楚当前动态、仍然埋头使用陈旧CentOS EOL版本的用户,随着安全漏洞的不断增加,他们还是会被迫转向CentOS Stream 8。

也有开发者表示,如果某些用户对CentOS Stream不感兴趣,那他们最好的选择是放弃CentOS。“CentOS属于RHEL的直接替代方案,但CentOS Stream在定位上就与此不符。CentOS Stream的核心在于为消费者及发行版建立起合作关系,由消费者对发行版的构建内容做出评估及反馈。如果消费者需要的是永远不出问题、永远不用归档/跟踪bug、甚至不需要关注版本更新内容的解决方案,那么CentOS Stream显然不是他们的菜。”

目前,关于CentOS Linux 8如何迁移CentOS Stream 8的讨论仍在继续。Rich Bowen在发送给CentOS-devel的邮件中建议,“准备好清晰的文档、突出显示要点部分、抱有正确的反响预期。”他在文中概述了将CentOS 8归档至vault.centos.org的整个流程。考虑到此次生命周期调整的特殊性,他还广泛征求意见、询问流程中还有哪些部分需要修改。

还有更多选择

当然,用户的选择不只是CentOS Stream。作为Red Hat中止服务的回应,CentOS创始人Kurtzer创建了新的Rocky Linux项目,来继续CentOS最初的使命。经过7个月的时间,Rocky Linux 8.4终于在今年6月底发布,该版本支持x86 64和aarch64。

相对来说,Rocky Linux发布时间是较晚的。Kurtzer表示,除了从零构建、保证全方位性能外,他也在一直想办法将项目留在社区手中,避免CentOS相同的命运。为此,Kurtzer创建了具有“社区章程”的Rocky企业软件基金会(RESF)。

不过,上线72小时内,Rocky Linux便吸引了70,000次下载。其中,谷歌已经开发了一个定制版Rocky Linux安装在了谷歌计算引擎(GCE)上,谷歌是RESF的赞助者之一。另外,微软“作为RESF的合作伙伴签约”,也将确保Rocky Linux在Azure上的可用性。

在此之前,Cloud Linux在今年3月份也发布了一个新的RHEL衍生产品,名为Alma Linux。该项目也承诺100%由社区拥有。

近期,Cloud Linux发布了支持Arm/AArch64架构的8.4稳定版。该版本由Arm协助并且AWS在其基于ARM的Graviton VM实例上进行测试(Rocky也有可用的ARM版本)。据Alma Linux基金会成员Simon Phipps介绍,Alma Linux的优势是,在Cloud Linux中,稳定地支持RHEL下游厂商使用。

Alma Linux桌面

Alma Linux也得到了早期采用者的积极评价。虽然其在最近的一份声明中谈到“主镜像站点下载数达万次,而来自世界各地133个其他镜像站点的下载数量还未定。”不过据外媒报道,在同一时刻,Alma Linux聊天服务器的通用频道中有203名成员,而Rocky Linux有5536名成员。这意味着,Alma Linux似乎并没有吸引到如此大的社区。