Red Hat、CentOS、Rocky Linux 與 AlmaLinux 沿革
了解 Red Hat Linux 如何分為 Fedora 與 RHEL、CentOS 為何存在,以及 2020 年 CentOS Stream 改變導致 CentOS Linux 8 提前於 2021 年底停止支援的原因。
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 並未從頭打造這個系統,而從 Bell Labs 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 的預設元件,直到 2014 年 6 月 RHEL 7 才採用。因此,是否應取代 SysV init 的爭論早在 systemd 進入企業伺服器前數年,就已在上游專案中解決。
這項分流留下了一個缺口。許多人希望取得 RHEL 的十年生命週期,卻不必按伺服器付費;Fedora 無法滿足這項需求,因為 Fedora 版本的支援期限約為 13 個月。
為什麼可以免費重建 RHEL?
RHEL 幾乎完全由採用自由授權的軟體組成,其中 GNU General Public License (GPL) 是關鍵。GPL 要求任何取得二進位檔的人,也能取得相符的原始碼。Red Hat 透過公開方式履行這項義務:先在公開伺服器上發布 source RPM (SRPM,每個元件的封裝原始碼),之後再發布到 git.centos.org 儲存庫。
原始碼並不等於完整產品。RHEL 有兩個部分始終不能自由複製。Red Hat 商標屬於 Red Hat,因此重建者必須移除所有標誌,以及所有名稱提及。付費服務也仍受付費牆保護,包括更新伺服器、支援合約、認證流程,以及說明每項修正的 errata。
重建流程很容易說明。取得已發布的原始碼、移除品牌內容、重新建置,然後發布結果。目標是達到逐錯誤相容,也就是重建版本包含與 RHEL 相同的修補程式,並具有相同的行為,連錯誤也一樣。這種精確度正是重點,因為商業軟體都是以 RHEL 為基準進行認證。如果重建版本的行為完全相同,該軟體就能在其上執行,但供應商不會為此提供支援。
CentOS 的用途是什麼?
CentOS 代表 Community ENTerprise Operating System。它源自 Gregory Kurtzer 在 2002 年啟動的 cAos Linux 專案。第一個 CentOS 版本於 May 14, 2004 發行,版本號為 2,因為它是以 RHEL 2.1AS 建置。
CentOS 的吸引力在於生命週期。每個 CentOS 版本都比照 RHEL 提供十年的支援期限,而且完全免費。代管公司將它用於預設映像檔,大學在叢集上執行它,設備廠商將它內建於產品中,控制面板也以它已經存在為前提。如果你在大約 2006 到 2020 年間租用 虛擬私有伺服器,作業系統選單中通常會有 CentOS,而且它往往是預設選項。
CentOS Linux 7 展現了這項承諾確實如預期運作。它於 July 7, 2014 發行,安全性支援持續至 June 30, 2024,距離完整十年只差幾天。正因如此,使用者才放心以後續版本制定為期十年的規劃。
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。Special Interest Groups 在基礎發行版上提供額外內容,例如虛擬化與儲存堆疊。
結構上的變化較不明顯,但這正是 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。
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) 管理,主要商業支持者是由 Kurtzer 創立的 CIQ。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 則源自一家在發布當天將商標移交給基金會的公司。在最初 2 年中,兩者在實務上的差異很小,而且都提供了 CentOS Linux 使用者失去的功能。
Red Hat 在 2023 年對 RHEL 原始碼所做的變更
2023 年 6 月 21 日,當時擔任 Red Hat 核心平台副總裁的 Mike McGrath 發布了〈Furthering the evolution of CentOS Stream〉。其中的關鍵句是:CentOS Stream 將成為公開發布 RHEL 相關原始碼的唯一儲存庫。原本推送至 git.centos.org 的 RHEL 原始碼,不再推送到該處。
Red Hat 客戶與合作夥伴仍可透過客戶入口網站取得 RHEL 原始碼。這符合 GPL,因為相關義務是針對取得二進位檔的人。改變的是公開取得原始碼的途徑。現在不再公開張貼某個 RHEL 次要版本實際發布內容的逐套件完整紀錄。此外,CentOS Stream 位於 RHEL 之前,而不是與 RHEL 處於同一版本線上。因此,只使用 Stream 的重建者無法精確重現已發布的次要版本。
Red Hat 的立場是,Stream 屬於上游,而公開原始碼應該放在上游。重建專案的立場則是,這項變更移除了它們自 2004 年以來一直依賴的資料。這兩種描述都正確。雙方的分歧在於該授權的目的,而不是授權條文的內容。
這些重建專案如何回應,以及 OpenELA 是什麼
Rocky Linux 最先回應。該專案在 2023 年 6 月 29 日發布的文章中表示,會繼續透過不需要額外協議的途徑取得 RHEL 原始碼:Red Hat 的 Universal Base Image (UBI) 容器映像,以及公有雲中的按用量計費 RHEL 執行個體。任何取得這些二進位檔的人,都擁有 GPL 賦予的相應原始碼權利。Rocky 仍以逐一追蹤 RHEL 發布版本為目標。
AlmaLinux 的回應不同。2023 年 7 月,由 benny Vasquez 主持的董事會放棄與 RHEL 一對一對應的目標,改採應用程式二進位介面 (ABI) 相容性。ABI 相容性表示,為 RHEL 建置的軟體可在 AlmaLinux 上不經修改地執行,但兩者不必是完全相同的建置版本。這項取捨換來了更大的自由。AlmaLinux 可以在 RHEL 之前發布修正,也能繼續支援 RHEL 已停止支援的硬體。
兩家規模較大的廠商也採取了行動。2023 年 7 月 11 日,SUSE 表示會公開 fork 可取得的 RHEL,並投入超過 1000 萬美元開發相容的發行版。Oracle 自 2006 年起便以 RHEL 相容產品的形式發布 Oracle Linux,也在同一週公布了自己的回應。
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 於 May 20, 2025 發布,AlmaLinux 10「Purple Lion」於 May 27, 2025 發布,Rocky Linux 10「Red Quartz」則於 June 11, 2025 發布。這些版本都提供 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 build。在舊主機 CPU 上執行的廉價 VPS 中,這項決定可能直接影響系統能否安裝。若要針對特定機器評估這項取捨,VPS 適用的兩個重建版本比較 會並列相容性承諾與 CPU 基準。安裝完成後仍有其他差異,在 Rocky Linux 或 AlmaLinux 上安裝 Docker Engine 通常是使用者首先遇到的問題,因為 podman 已經占用 docker 命令,而 SELinux 會以 Ubuntu 指南未提及的方式重新標記 bind mount。
這段時間線可以從 4 個實務角度解讀:
- 如果需要廠商關係,請購買 RHEL。訂閱本身就是產品,並提供任何重建版本都無法提供的認證與支援管道。
- 如果想要 CentOS Linux 過去提供的內容,AlmaLinux 和 Rocky Linux 都能提供,而且免費並具有十年支援期限。若是從 Debian 或 Ubuntu 機器轉換而來,日常調整主要是套件管理器的差異,因此第一週請將 各個 apt 命令對應的 dnf 命令 放在手邊。
- 如果撰寫的軟體必須在 RHEL 上執行,或希望修補程式能進入 RHEL,CentOS Stream 就是正確的目標,而較短的支援期限就是相應代價。
- 如果以上都不適用,Debian 生態系會以自己的方式回答相同的生命週期問題,而 Ubuntu LTS 與 interim releases 之間的選擇 就是你在該生態系會遇到的對應決策。
這段時間線背後的重點是治理,而不是程式碼。CentOS Linux 是品質良好的軟體,但仍然提早結束,因為它由資助其所仿製產品的公司提供資金。選擇預期執行十年的機器所使用的發行版時,請確認由誰提供資金,以及商標由誰持有。AlmaLinux 將商標交由基金會持有。Rocky 則由 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 container images 和 public cloud instances 取得的原始碼重新建置。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 自己發布的文章則著重於開發模式,而非這種解讀。