關於 Red Hat 近期停止公開發佈 RHEL SRPM 之探討

近期一個比較重大的產業消息,是 Red Hat 停止在公開站點(git.centos.org)上發佈 RHEL 的 SRPM 原始碼套件。直接公開的原始碼下載途徑僅存 CentOS Stream,也就是 RHEL 的上游開發版本。並且由於 CentOS Stream 更動較 RHEL 快速,所以其原始碼也不是完全與當前 RHEL 一致的狀態。至於 Red Hat 的訂閱用戶,則依然能夠從用戶後台系統、或者是使用 dnf/yum 工具來下載 RHEL 的 SRPM。

 

然而在 Red Hat 的訂閱條款(PDF)裡,也聲明其訂閱服務不得用於進行軟體的重新散佈(參見「Unauthorized Use of Subscription Services」之細則)。這因此表示那些基於 RHEL SRPM 重新編譯而成的 Linux 發行版,如 AlmaLinuxRocky Linux 等,倘若希望繼續與 RHEL 保持 1:1 的一致性將會遇到挑戰。此外也引起了許多討論,包含 Red Hat 的作法是否合理等等。

 

由於相關議題很難輕描淡寫地敘述,所以本文不幸地會有些冗長。DR 這回得用較長的篇幅來描述其歷史脈絡,以及自己對於這件事的看法。

 

歷史回顧(一):Red Hat Linux 的結束與分裂

RHEL(Red Hat Enterprise Linux)的前身是 Red Hat Linux,其產品週期自 1995 年起,止於 2003 年,最終版本為 Red Hat Linux 9。Red Hat Linux 的產品目標,是收納最新的 Linux 技術,再組織成一套可用、多功能的作業系統。至於就授權層面而言,Red Hat Linux 本身是定位為免費產品,使用者可自行從網路上下載安裝映像。而主要的獲利來源,則是透過盒裝版本的銷售,以及技術支援服務。考量到在網路頻寬還沒有那麼發達、甚至燒錄設備也沒有那麼普及的年代裡,用戶購買安裝光碟是很務實的作法。

 

Red Hat 在 2002 年以 Red Hat Linux 為基礎,發佈了 Red Hat Enterprise Linux 的第一個版本(2.1)。即如名稱所示,RHEL 是針對企業用戶的 Linux 發行版,與 Red Hat Linux 的主要差異,在於不再頻繁地釋出新版本,而是為每一個版本提供長期穩定的支援及維護。其營銷方式也改走訂閱制,用戶會需要訂閱才能使用官方的套件庫,來進行安裝及更新動作。

 

2003 年,Red Hat 正式將原本的 Red Hat Linux 一分為二,分別是 RHEL 及 Fedora Core(後更名為 Fedora,或稱 Fedora Linux)。Fedora 是一款由社群主導的發行版,很大程度繼承了原本 Red Hat Linux 的產品定位,大約每半年會發佈一個新版本。也保持完全可免費使用的特性,用戶無須訂閱就能夠使用線上套件庫。只是每一個版本的生命週期,相較於 RHEL 是短了許多。

 

Fedora 實質上可以被視為是 RHEL 的最上游版本,Red Hat 會從 Fedora 發佈版本中選定一個,來作為下一代 RHEL 的開發基礎。此外 RHEL 的原始碼套件,也依然能夠在 Red Hat 所提供的站點上免費取得,也為日後 RHEL 複製品的誕生埋下了伏筆。

 

歷史回顧(二):CentOS 的崛起

雖然 RHEL 是定位為付費產品,然而它的原始碼仍是公開的,並同樣採行自由軟體(free software)的授權條款。這表示其實任何人都可以利用 RHEL 的原始碼,在剝離 Red Hat 商標後,重新組建出一套 Linux 發行版,也就不會受到 Red Hat 訂閱的限制。於是有為數眾多的組織、單位或企業,都不約而同地想到了這樣的作法,因此便衍生出了許多基於 RHEL 的發行版本,而其中最負盛名的是 CentOS

 

CentOS 的名稱含意是 Community Enterprise Operating System,也就是由社群所支援的企業版作業系統。然而具體來說,這個所謂由社群所提供的支援,最主要便是將 RHEL 原始碼重新組建成 CentOS,再提供給用戶下載使用。除此之外,基本上不能期待使用 CentOS 會真正在技術問題上得到支援服務,或者是擁有不同於 RHEL 的額外功能(不是完全沒有,但比例很小)。

 

CentOS 與 RHEL 在使用上僅存在一項差異,那就是前者移除了訂閱要求,用戶可以很容易地下載安裝映像,也能夠直接使用線上套件庫,而無須進行帳號登入的動作。此外由於 CentOS 得等待 RHEL 釋出更新的原始碼後,再重新組建。所以 CentOS 的更新週期會晚於 RHEL,甚至是無法保證兩者之間的發佈間隔。

 

實質上 CentOS 形同於 RHEL 的免費版本,它是在自由軟體授權保障下的產物,換言之其實也可以說它是 RHEL 的合法仿製品。儘管 CentOS 的營運資源是來自於志願者及捐款,所以其存續性是難以被擔保的。但這項專案依然緊緊跟隨著 RHEL,釋出對應的發行版本,如 CentOS 3、4、5、6 等,也逐漸累積出數量龐大的用戶群體。而 Red Hat 自然也注意到了這樣的態勢,在 2013 年的一篇訪談裡,Red Hat CEO Jim Whitehurst 曾表達對於 CentOS 的看法。他認為 CentOS 的存在,有利於擴大 Red Hat 在 Linux 生態中的影響力,也讓用戶在導入以 Red Hat 系統為基礎的解決方案時,能夠有更具彈性的成本選項。

 

歷史回顧(三):Oracle Linux 的競爭

雖然 CentOS 可能是最為著名的 RHEL 衍生版本,不過從可見的歷史脈絡來看,其實最早讓 Red Hat 意識到衍生物所帶來的競爭風險,並非是來自於 CentOS,而是來自另一間商業公司、同時也是軟體巨頭的甲骨文(Oracle)。Oracle Linux 同樣也是從 RHEL 的原始碼重新組建而來,但額外提供了經修改的 Linux 內核,標榜相容於 RHEL,卻有著更多的功能與改進。在授權方面,Oracle Linux 與 CentOS 相同,可免費使用,獲利來源則是依賴客戶對於技術支援服務的訂閱。

 

Red Hat 在 2011 年改變了 RHEL 內核原始碼在 SRPM 套件裡的封裝方式。不再將原始碼的異動以個別的 patch 檔保存,而是將所有異動都直接合併到原始碼裡。此舉被視為是對 Oracle Linux 的回應,使其需要花費更多的工程,來研究 RHEL 對於內核的異動。這不是一個意圖消滅 Oracle Linux 的措施,Oracle Linux 依然存續至今,並且甲骨文與 Red Hat 在許多項目上都依然保持合作。不過這是首次顯示出,Red Hat 會有意識地,在依然滿足自由軟體授權的前提下,停止供應那些有利於生產出 RHEL 仿製品的資源。

 

歷史回顧(四):CentOS 加入 Red Hat

正如前面所提到的,CentOS 本身是一個仰賴捐款的社群專案,它背後並無特定的商業公司來支撐其營運。不過在 2014 年,這個景況出現了變化,幾名 CentOS 的核心志願者帶著 CentOS 的商標投靠到 Red Hat──換言之就是 Red Hat 買下了 CentOS 專案的所有權,到了自己的手上。這使得 CentOS 正式地成為 Red Hat 旗下的社群專案,如同於 Fedora。

 

在加入到 Red Hat 後,CentOS 依然是從 RHEL 的原始碼重新組建而成,再免費提供給使用者,作法上並沒有出現變化。CentOS 5、6 的更新服務依舊,且對應於 RHEL 7 的 CentOS 7 也於同年發佈。CentOS 加入 Red Hat 一事,有可能某種程度加深了用戶群體對於 CentOS 的信心,也讓 CentOS 在多個  RHEL 衍生版本中顯得更為突出。而另一方面,Red Hat 在擁有了 CentOS 後,或許也因而能夠認真地評估,究竟該如何妥善地運用這項資產。

 

RHEL 的產品特性,與 CentOS 的存在價值

在繼續往下之前,可能我們得先停在這裡想一下:為什麼明明有這麼多 Linux 發行版可以選擇,能夠直接聯想到的,還有諸如 DebianUbuntuArch LinuxSUSE 等等這些不屬於 Red Hat 生態體系的發行版。那麼究竟 RHEL 有何特別的吸引力,甚至是讓人想要仿製出與它完全相同的發行版本?

 

首先要指出的,是以 Linux 為首的開放原始碼世界,無論是內核、系統工具、函式庫及應用程式等等,程式版本的演替往往相當快速。然而每次釋出的新版本,未必都適合交付給所有用戶。這是因為對於某些用戶,也許會有工作環境不相容的情形,以及倘若是大幅的程式改動也有可能會引致新的 Bug(regression),而這也是生產環境所不樂見的。

 

對此,RHEL 發行版的特色,是為用戶與這些軟體之間,擔當一個中介的過濾層,藉此評估進行版本更新的可靠性及必要性。換言之,RHEL 不會一味地為用戶提供最新的軟體版本,而是會經過評估及篩選,甚至是經過改造──特別是以 Linux 內核來說,RHEL 的內核更新不是簡單地從上游專案(kernel.org)直接獲取最新的版本,而是以較舊的內核為基礎,再自行從新版本中移植所需的功能與修正。這也是為什麼 RHEL 的內核會被形容為是「科學怪核」(Frankenkernel)的原因。

 

這因此表示,RHEL 的用戶可以放心地使用 RHEL 的套件更新服務,而無須擔心原本的工作任務會因為執行更新後受到破壞。當然這並不是說 100% 一定都是如此,但至少 RHEL 對此是有明確的目標,有效地避免使用者成為軟體版本更新的白老鼠。此外,RHEL 也為每個發佈版本提供 10 年的長期維護支援。這表示用戶一旦選擇 RHEL,就不太需要考量作業系統本身的壽命問題,而更多可以關注在硬體壽命、或者是應用程式的需求上。然後在硬體或者是應用程式需要出現世代交替時,再一併更換作業系統的版本。

 

另一方面,由於 RHEL 是在快速更替的 Linux 世界中,提供了一個相對可靠、低浮動性的型態。這使得硬體廠商及商用軟體的開發者,更願意以 RHEL 作為標準,來提供對於 Linux 平台的支援。儘管事實上 RHEL 不是唯一一款標榜提供長期穩定支援的 Linux 發行版,然而考量到 Red Hat 在 Linux 產業中有很強勁的品牌優勢,這使得 RHEL 相較於其它競爭者是更容易得到關注。

 

至於 CentOS 則是繼承了 RHEL 的所有優勢,但卻不需要花錢訂閱就能夠獲得。只是缺少了 Red Hat 的技術支援服務,以及較為延遲的更新週期。其實平心而論,除了免費與付費的差異外,便利性也算是 CentOS 相較於 RHEL 的一項優勢。無須登入帳號、也無須在意系統安裝數目,隨時隨地安裝起來就能夠使用線上套件庫,任何人都會覺得是比較方便的作法。

 

CentOS 的零持有成本也引起了許多商用軟體廠商的關注,因為這讓廠商能夠將軟體與作業系統整合為一套產品來提供給用戶,卻無須擔負作業系統的授權及維護成本(無論是廠商或者是用戶),也因而提昇了用戶購買軟體的意願。

 

除此之外,CentOS 的存在,也很有可能是促進了 RHEL 第三方套件庫的生態發展,如 EPELRPM FusionELRepoRemi's RPM 等。因為從部份可見的數據中能夠印證,CentOS 的用戶數目應遠多於 RHEL,而如此龐大的用戶數也提昇了對於各種第三方套件的需求。並且由於 RHEL 與仿製品之間的高度一致性,使得這些第三方套件庫能夠同時適用於多種不同的發行版,無須額外的維護成本。

 

前情提要:CentOS 的終結與迴響

2020 年 12 月,一件令許多人倍感意外的消息,是 Red Hat 決定要終止現有的 CentOS 經營方式,改由名為 CentOS Stream 的發行版取而代之。兩者的差異,在於 CentOS 是 RHEL 的下游版本,單純地從 RHEL 的原始碼重新編譯而成;至於 CentOS Stream 則是 RHEL 的滾動式預覽版本,其變動最終會進入到 RHEL 中。

 

另一項差異,是 CentOS Stream 的維護週期為 5 年,CentOS 則為 10 年。長度的差異是基於 RHEL 的維護期間,前 5 年為完整支援期間(Full Support Phase)、後 5 年則為維護支援期間(Maintenance Support Phase),而 CentOS Stream 所規劃的生命週期僅包含前者。

 

才於 2019 年發佈的 CentOS 8 是最直接受到影響的發行版本。原先預期會與 RHEL 8 一同維護至 2029 年,但直接腰斬至 2021 年結束支援。雖然 Red Hat 有提供無縫轉換至 CentOS Stream 8 的流程,不過仍很有可能讓已經在使用 CentOS 8 的用戶感到措手不及。並且未來也不會再出現 CentOS 9,取而代之的是 CentOS Stream 9。這使得 CentOS 7 成為最終存續的發行版本,會維持原計畫維護至 2024 年。

 

在這樣的變革下,關於 CentOS Stream 能否取代原先 CentOS 的角色,這引起了一些討論與評估。也讓原先是基於 CentOS 來打造產品的企業,必須得做出不同的調整。一項顯著的案例是 Amazon Linux,原先的 Amazon Linux 2 是以 CentOS 7 為基礎發展而來;然而新版本 Amazon Linux 2023 則是改以 CentOS Stream 9 及跨多個 Fedora 版本為其混合基礎

 

另一方面,RHEL 授權也做了一些調整。用戶只要建立 Red Hat 帳號,再啟用開發者訂閱,就能夠獲得免費的 RHEL 授權,上限為 16 部主機。授權有效期為一年,而每年只須執行重新訂閱的動作,便能夠再獲得新的授權。此外,開源碼專案也可申請免費的 RHEL 授權。

 

不過也開始出現新的聲音,認為應由 Red Hat 以外的力量,再次重建出如同於 CentOS 的 RHEL 複製品。畢竟雖然 CentOS 停止發佈,但 RHEL 的原始碼依舊是開放給公眾的。第一款因此而誕生的 Linux 發行版,是 AlmaLinux。AlmaLinux 是由 CloudLinux 公司組建出的 CentOS 替代品。由於 CloudLinux 公司自身的產品(CloudLinux OS)原先就是標榜為 CentOS 增加額外的功能。所以生產出 CentOS 的替代品,事實上對他們來說是有其必要性的舉措。

 

第二款因而誕生的 Linux 發行版則是 Rocky Linux。這是由 CentOS 的創始人 Gregory Kurtzer,在離開此專案多年後,重新打造出的 CentOS 替代品。發行版的命名是紀念已離世的 CentOS 早期貢獻者 Rocky McGough。Rocky Linux 與 AlmaLinux 相同,都是可免費使用的 RHEL 複製品,並且由 Gregory Kurtzer 所屬的公司 CIQ 提供商業性的技術支援。

 

隨著 AlmaLinux 8、9 以及 Rocky Linux 8、9 的發佈,似乎有效地填補了原先 CentOS 所遺留的空缺。舉例來說,費米實驗室(Fermilab)曾自行組建專用的 Linux 發行版,名為 Scientific Linux。同樣是從 RHEL 的原始碼重新組建而來,Scientific Linux 7 為其最終版本,對應於 RHEL 7。不過後來也在尋覓可取而代之的解決方案,於是在 2022 年的公告裡,他們推薦使用 AlmaLinux,然後在某些情況下則是使用 RHEL。

 

新事變:RHEL 停止在公開站點上發佈原始碼

在 2021-2022 年間,用戶群體看似已經逐漸從 CentOS 的變革中調適過來。儘管 Red Hat 明確地透過變革,消除了 CentOS 再繼續作為 RHEL 競品的可能性。但與此同時,Red Hat 也並未對諸如 AlmaLinux 或 Rocky Linux 這類的 CentOS 替代品,採取任何設法消除其存在的舉動。AlmaLinux 及 Rocky Linux 很有可能會取代原先 CentOS 在用戶群體中的作用,這似乎是沒有疑義的。

 

然而就在 2023 年 6 月,一項新的變化發生了。估計最早是由 AlmaLinux 的維護人員注意到的,再隨後得到 Red Hat 公告確認。如同本文一開始所敘述的,Red Hat 停止在公開站點上發佈 RHEL 的原始碼,而此種途徑過去一直以來都是 RHEL 複製品所依賴的上游來源。關於這項變化,Red Hat 所發佈的消息如下:

 

在 Red Hat 所做的進一步說明裡,是指出其實 RHEL 背後所使用的程式碼,即便是 Red Hat 開發人員所貢獻的,也都可以在上游的發行版本,如 CentOS Stream 及 Fedora 中尋得,或者也可以在更上游的開源碼專案裡找尋得到。Red Hat 沒有保留任何程式碼不讓外界獲得,依然是遵循開放原始碼的精神。只是與此同時,Red Hat 也沒有義務,要持續為競爭對手提供便利的 RHEL 原始碼獲取方式,來用於生產出標榜 1:1 與 RHEL 相同的競品(甚至萌生出一種較為含蓄的描述,叫 bug-for-bug compatibility)。這反而是對自由軟體授權的濫用,助長純粹的抄襲而非真正良性的競爭。

 

各方回應

針對 Red Hat 的聲明,AlmaLinux 表示自己也是 Red Hat 及至整個 Linux 生態的積極貢獻者,有實質的投入資金及開發人員等資源在相關的各項專案中,因此會認為 Red Hat 的看法實則有欠公允。不過最終來說,AlmaLinux 仍同意調整其經營方式,不再標榜與 RHEL 保持 1:1 的一致性,但依然會設法達到高度的相容性,以確保使用者可以在這些不同的系統中無痛轉換。AlmaLinux 的相關回應如下:

 

至於 Rocky Linux 則明確地表示不認同 Red Hat 的作法,認為自由軟體及其原始碼都不應存在任何的付費牆。儘管 RHEL 停止在公開站點發佈原始碼,確實造成了一些麻煩。但這並不會因而消除 Rocky Linux 致力打造出 RHEL 免費版本的信念,Rocky Linux 將會透過各種可行途徑來達成其目標,甚至是使用 RHEL 僅提供給訂閱用戶的原始碼套件。因為 Rocky Linux 認為 Red Hat 不具備有效立場,能夠對 RHEL 的原始碼提出額外的限制。Rocky Linux 的相關回應如下:

 

另一方面,Orcale Linux 也做出了回應,同樣地是對 Red Hat 的觀點提出反對,並鼓勵 Linux 的用戶及開發者可以轉投 Oracle Linux。它將繼續保持與 RHEL 的相容性,並維持原始碼的免費散佈。不過 Oracle Linux 在回應中並沒有談論到,是否有受到 RHEL 原始碼停止公開發佈的影響。缺乏可見的說明來瞭解它具體是如何、或者從何處來獲取上游原始碼的。Oracle Linux 的回應可參閱以下連結:

 

除此之外,比較令人意外地,是原本不屬於 Red Hat 生態體系的 SUSE 也加入了戰局。宣佈將會投注資金,與 Rocky Linux 背後的公司 CIQ 合作,協助建立 RHEL 的分支版本:

 

一個與之相關的消息,是新的聯盟誕生了:OpenELA(Open Enterprise Linux Association)是由 Oracle、CIQ及 SUSE 共同組織而成。該協會的宗旨是建立一個與 RHEL 保持相容性的原始碼庫,成為各個 RHEL 分支的共同基礎。消息連結如下:

 

選項回顧:CentOS Stream 能否取代原先 CentOS 的角色?

在新的變革下,或許又會讓人再次地思考,是否使用 CentOS Stream 來取代 CentOS 是可行的?關於這項問題,本站去年曾有一篇使用心得,結論是 CentOS Stream 的使用體驗與 CentOS 如出一轍。一般來說,在 CentOS 上能夠做到的事情,在 CentOS Stream 上也能夠做到。倘若用戶對於 CentOS 的運用方式,是用於便利地建立出與 RHEL 相仿的環境,以便進行測試、實驗或者學習用途,再將相關的成果運用在正式的 RHEL 環境上,那麼 CentOS Stream 完全可以滿足這樣的需求。

 

但如果用戶期待的是一個免費、不用註冊又完全 1:1 等同於 RHEL 的發行版。那麼確實不同於 CentOS,這並非是 CentOS Stream 所設定的角色。不過估計對多數用戶來說,CentOS Stream 的更新早於 RHEL,其實並不會造成多大的影響。此外也不是所有的使用情境,都需要依賴 RHEL/CentOS 長達 10 年的生命週期,有可能 CentOS Stream 的 5 年生命週期已是綽綽有餘。至於若是用戶依然有免費使用 RHEL 的需求,則如前文所曾描述過的,Red Hat 有提供上限數已經過擴展的免費訂閱方案。

 

不過 DR 也認為,其實 Red Hat 應該要慎重考慮讓 CentOS Stream 的生命週期比照 RHEL,而非只有後者的一半長度。因為既然 CentOS Stream 是作為 RHEL 的開發預覽版本,讓社群資源能夠藉此涉入 RHEL 的開發過程。這樣的功用不需要只做一半,而是應完整反映在整個 RHEL 的生命週期內。

 

爭議:Red Hat 是否有違背自由軟體授權條款?

首先在輿論中不時會存在一些誤解,是認為自由軟體授權,表示軟體的原始碼必須要免費向公眾發佈。事實上在以 GPL 為首的各類自由軟體授權條款裡,都沒有這樣的規範。自由軟體是確保軟體的用戶能夠獲取軟體的原始碼,所以假設有一套軟體是需要付費才能使用,則軟體的原始碼僅須提供給它的付費用戶,而不需要以免費公開的方式散佈。因此 Red Hat 限制僅有 RHEL 的訂閱用戶才能獲取 RHEL 的原始碼,這並無違反自由軟體授權的疑慮。

 

接著,一個比較偏道德層面、而非專注在授權條款的觀點。是有些意見認為,RHEL 是由眾多的自由軟體組織而成,這些軟體的原始碼是匯集許多人的工作成果,而不是只靠 Red Hat 自己開發出來的(即便 Red Hat 所僱用的開發者經常佔了不小比例的貢獻)。所以 RHEL 限制僅有訂閱用戶才能獲取產品或原始碼,是不符合共享精神的。然而這樣的觀點忽視了 RHEL 所採用的原始碼,其實都可以從這些自由軟體的上游專案裡獲取,Red Hat 並沒有隱藏任何的技術或修補,是僅存在於 RHEL 中的。這表示 RHEL 對於原始碼的限制,僅僅是針對便利地仿製出 1:1 RHEL 發行版的企圖,增加了些許障礙,但並沒有損及任何的公眾利益。

 

DR 認為真正存在爭議之處,是如本文起初所指出的,Red Hat 在用戶合約中聲明其訂閱服務的違規項目,包含了用於進行軟體的重新散佈,而 Red Hat 將保留對違規用戶終止服務的權利。可以想見 Red Hat 自身就是自由軟體授權規範的專家,因此他們在用戶合約的擬定上,很可能是精準地選擇了一個灰色地帶,運用了在自由軟體授權條款裡沒有明確界定的地方。雖然自由軟體很明確地聲明,用戶擁有對軟體進行重新散佈的權利。然而 Red Hat 的用戶合約則採取一種迂迴式的限制,「軟體」的重新散佈有可能會導致「服務」被撤銷。這可以被解讀為實際上就是禁止重新散佈,也是 DR 覺得唯一存在合理疑義的地方。

 

結語:使用者依然有許多選擇,但飲水思源也很重要

Red Hat 停止公開發佈 RHEL 的原始碼,就目前可見的發展來看,雖然確實影響了那些以 RHEL 作為上游來源的發行版本,在原始碼的獲取上存在新的挑戰。不過根據已知的資訊,諸如 AlmaLinux 及 Rocky Linux 等發行版本,也並未因此出現無法繼續經營下去的情形,同時對於用戶的選擇也很可能並沒有產生什麼新的影響。

 

然而每一個從 Red Hat 生態中獲益的企業、個人或組織,無論是使用 RHEL、CentOS Stream、Fedora、AlmaLinux、Rocky Linux、Oracle Linux,或者是其它名氣沒有那麼響亮的 Red Hat 衍生版本,都應該要謹記 Red Hat 是這整個生態的源頭,而源頭的存續是至關重要的。Red Hat 可以選擇自己想要的經營方式,而從生態中獲益的用戶,則應對此抱持更多的理解與尊重。

 

分類: