CentOS: 永遠有多遠就離它多遠

CentOS 是 “Community Enterprise Operating System” 的縮寫,按字面翻譯為“社區(qū)企業(yè)操作系統(tǒng)”,而 CentOS 受害者一般稱其為“圣斗士”,準確描述它的中二性質(zhì)。這是一款讓人一言難盡的 Linux 發(fā)行版。
如果一定要為服務器挑選 Linux 發(fā)行版(假設不考慮其他非 Linux 系統(tǒng)例如 FreeBSD)的話,首要的原則就是盡可能遠離 CentOS。
這篇文章告訴你為什么。?不服來戰(zhàn)。
Red Hat 的榮光
說起 CentOS 就不得不提到紅帽公司 (Red Hat)。紅帽早年發(fā)布的“紅帽 Linux” (Red Hat Linux) 對 Linux 的普及作出了巨大貢獻。之后紅帽專注于企業(yè)市場,主打“紅帽企業(yè) Linux” (RHEL, Red Hat Enterprise Linux),同時將民用版產(chǎn)品線移交給開源社區(qū)開發(fā)和維護,改稱為“氈帽 Linux” (Fedora Linux)。
讓鋼鐵直男掌握產(chǎn)品命名權(quán)就會出現(xiàn)這個畫風,而且他們還自我感覺良好。

按你胃,F(xiàn)edora 與 RHEL 的關(guān)系是這樣的:
Fedora 是一個追求新功能的發(fā)行版,更新速度快(大約每半年發(fā)布一次新版),由社區(qū)主導(提供免費勞動力與小白鼠),由紅帽提供支持。 RHEL 是一個追求穩(wěn)定的企業(yè)級發(fā)行版,更新速度慢(三到五年才更新一次大版本),由紅帽主導。新功能在 Fedora 里經(jīng)過驗證,會被有選擇性地加入 RHEL 的下一個大版本。這相當于紅帽定期收割社區(qū)勞動成果,與社區(qū)互惠互利。 簡單來說,F(xiàn)edora 是紅帽利用開源小白鼠們?nèi)馍頊y試和修復新功能的沙盒,而 RHEL 就是日后這些新功能的企業(yè)級穩(wěn)定發(fā)行版。RHEL 還包含另外一個重要組成部分,即紅帽提供的訂閱服務。將 RHEL 用于生產(chǎn)環(huán)境的前提是必須付費訂閱(最便宜的一檔為自助服務,也就是不提供客服),否則只能用于測試和開發(fā)。換句話說,只有向紅帽支付了過路費才有使用 RHEL 的權(quán)力。
RHEL 的付費規(guī)定無可厚非。第一紅帽也是要吃飯的,第二紅帽不希望免費用戶吃肉罵娘,到頭來還讓它背鍋。事實證明 Fedora 與 RHEL 的共生模式是成功的,這兩款優(yōu)秀的發(fā)行版各自擁有特定的用戶群,整個開源生態(tài)也非常健康。
CentOS 的黑歷史
現(xiàn)在終于講到 CentOS 的來歷了。
由于 Linux 采用 GPL 許可證,紅帽發(fā)布的 RHEL 也必須完全開源,盡管不能直接免費使用成品。
歷史告訴我們,每當一款開源產(chǎn)品問世,開源社區(qū)一定會有一幫思路清奇的人靈機一動,投機取巧專做一些細枝末節(jié)的工作,然后包裝成自己的成果發(fā)布。

果然,覬覦 RHEL 名望的雞賊志愿者們一頓操作猛如虎,將 RHEL 的源碼拿來洗洗,去除 RHEL 專有程序以及其他不“清真”的部分,最后臉也不紅地改成自己的品牌,堂而皇之沽名釣譽。
于是這款名為 CentOS 的山寨品開始吹噓自己是 RHEL 原汁原味的“平民”企業(yè)級發(fā)行版,卻閉口不提因為缺乏 RHEL 技術(shù)支持所以實際上只是個半成品這個事實,把開源社區(qū)唬得一愣一愣的,騙取了大量不明真相的群眾的信任。
不得不佩服這幫人的推銷技巧。把 “Community” 與 “Enterprise” 結(jié)合在一起縮寫成 “Cent” 以凸顯其“平民企業(yè)級”標簽,的確是神來之筆。
遺憾的是,對用戶來說,“Community” 和 “Enterprise” 是不可能共存的兩個屬性,只能二選一。這個世界并沒有捷徑,想收獲就必須有付出。要么付出時間(使用社區(qū)免費產(chǎn)品,自己花時間踩坑并回饋社區(qū)),要么付出金錢(使用企業(yè)付費產(chǎn)品,破財消災,讓別人幫你踩坑)。不管選擇哪一種方案,最后都是對勞動成果的認可,都能以貨幣量化,本質(zhì)上沒有區(qū)別,并無高下之分。
而 CentOS 卻鼓吹“又要馬兒跑,又要馬兒不吃草”,我只能說這個思路真是絕佳的中二典范。
CentOS 的黑歷史遠不止這些。2009 年 7 月底,創(chuàng)始人兼管理員 Lance Davis 玩消失,導致 CentOS 的幾位核心成員以?公 (sī) 開 (bī) 信 的形式向他嚴厲逼宮,使得社區(qū)矛盾公開化。此后分崩離析的 CentOS 社區(qū)茍延殘喘至 2014 年初,最終被紅帽招安。也就是說從 2014 年開始,CentOS 項目已經(jīng)名存實亡了。
薛定諤的圣斗士
我在?《FreeBSD 勸進文》 里批判了大多數(shù) Linux 發(fā)行版不合理的一刀切發(fā)行模式,RHEL 也不例外。從 RHEL 的發(fā)行周期可以看出其默認軟件版本的陳舊(一般都至少落后發(fā)布時的最新版本三四年)。對于老舊的求穩(wěn)的企業(yè)級應用,例如簡單的網(wǎng)絡服務等,三四年的版本延遲并無大礙。然而,在技術(shù)日新月異的互聯(lián)網(wǎng)行業(yè),短短六到十二個月時間已經(jīng)可以迭代多次,三四年的周期更是足夠改天換地。
RHEL 提供十余年的維護支持,這也是不少 CentOS 擁躉津津樂道的一個賣點。然而,在強調(diào)快速迭代沖沖沖的互聯(lián)網(wǎng)企業(yè)眼里,“一成不變”根本就不是什么值得炫耀的事情,更有可能成為徹頭徹尾的反面教材。如果一個項目從出生、壯大到成熟都可以“穩(wěn)定”運行在十余年不變的“企業(yè)級”環(huán)境里,那么不是它規(guī)模小得都不需要重構(gòu),就是用戶沒有指數(shù)增長以至于觸發(fā)不了新的技術(shù)挑戰(zhàn),只能說明這個項目是失敗的。
很多運維口中所謂的極度強調(diào)“穩(wěn)定性”的“企業(yè)級”應用本質(zhì)上都屬于狐假虎威,實際情況卻是技術(shù)陳舊導致項目臃腫或者缺乏自動化,最后走到喪失可維護性的絕境,只能留在舊版本茍且偷生,混一天算一天。這樣的普通運維一般不具備互聯(lián)網(wǎng)企業(yè)常見的 DevOps 這類深刻理解開發(fā)與運維的復合型人才可以直接往應用和系統(tǒng)社區(qū)上游回饋修復代碼甚至貢獻新工具鏈的技能,以至于 CentOS 之類的虛假的“企業(yè)版”系統(tǒng)讓他們可以獲得心理安慰,有借口回避自己本質(zhì)上的成長問題。而這一類的運維也往往是和開發(fā)人員矛盾最深的那批人。
對“企業(yè)級穩(wěn)定性”的迷信和對新軟件的剛需,這兩個自相矛盾的需求直接催生了 EPEL (Extra Packages for Enterprise Linux)、ELRepo (Enterprise Linux Repository) 等一系列 RHEL 及其山寨品的野包的出現(xiàn)?!耙鞍敝傅氖欠枪俜骄S護的第三方軟件包,在這里“野”與“官方”是相對概念。例如,對于公司背書的企業(yè)級產(chǎn)品,“野”通常指代社區(qū)或者個人,“官方”指代公司。而對于社區(qū)產(chǎn)品,“野”通常指代更小眾的其他社區(qū)或者個人,“官方”則指代社區(qū)。
前面說過 RHEL 因為有付費支持的技術(shù)把關(guān)其實問題不大,可是 CentOS 既“平民”又“企業(yè)”的扭曲定位不可避免造就了大批精分用戶,他們甚至都不能以正常邏輯與人交流。
假設我們承認 CentOS 的“企業(yè)級穩(wěn)定性”,我們承認的只是 RHEL 系的原始代碼質(zhì)量。但 CentOS 軟件版本太舊,實際工作中其自帶倉庫幾乎沒有實用價值。如果要增加新軟件支持,無可避免就會使用到野包。盡管野包也有不同的“野”度(是從野倉庫直接裝還是從源碼野編譯,或者野包來源是野組織還是野人,等等),但所有這些操作在邏輯上有一點無可置疑,那就是一旦使用野包,整個系統(tǒng)就被“野”感染了,成了“野”系統(tǒng),換句話說就是失去了完整性 (integrity)。系統(tǒng)一旦“野”掉,“企業(yè)級穩(wěn)定性”就無從談起。
又假設我們不在意“企業(yè)級系統(tǒng)”被“野”感染,那么這樣的野系統(tǒng),又和其他任意的社區(qū)維護的 Linux 發(fā)行版,在“野”不“野”這個問題上,有任何區(qū)別呢?
說得更簡單點,那就是 CentOS 默認安裝幾乎沒法用,不是軟件太老就是缺這缺那,想正常使用就不得不被新版本的野包給“野”掉。所以要么是“穩(wěn)定但沒用”,要么是“有用但是野了所以不能繼續(xù)宣稱穩(wěn)定”。其實單獨宣稱任何一點都沒有問題,可是在現(xiàn)實生活中,CentOS 的精分用戶總會想方設法同時挑選兩點和你辯論。你說 CentOS 軟件太老,他們說不老啊,你不會加 EPEL 嗎?你說用了 EPEL 不就野了就不能在邏輯上宣稱穩(wěn)定了嗎?他們說哪里會,CentOS 是 RHEL 來的,很穩(wěn)定啊。
在他們眼里,CentOS 如同薛定諤的貓一般,既“無野包那樣穩(wěn)定”又“有野包那樣新”。當你想和他們具體理論的時候,他們總是能根據(jù)當前形勢將這兩個無法共存的優(yōu)點坍縮成最有利的那個與你辯論。

實際上,在所有的 Linux 發(fā)行版中,幾乎只有 CentOS 這朵奇葩有如此招黑的體質(zhì),因為它沒法在邏輯上回避“你到底野不野”這個直擊靈魂的拷問。
其他的 Linux 發(fā)行版就不會出現(xiàn)這種邏輯漏洞。隨便舉幾個例子:
Arch: 我本身就是野的,而且我還有更野的 AUR。我只說自己好用,但我從不標榜自己穩(wěn)定。 Debian: 我是野的但是野得很正規(guī)。我只說自己穩(wěn)定版穩(wěn)定但是軟件舊,測試版與非穩(wěn)定版軟件新但是不穩(wěn)定。我從不標榜自己又新又穩(wěn)定。 Ubuntu: 我比 Debian 更野因為我是山寨它的測試版與非穩(wěn)定版。我標榜自己的 LTS 版比 Debian 穩(wěn)定版更新,同時也有毫不遜色的穩(wěn)定程度,因為我背后有商業(yè)公司提供免費支持。 Gentoo: 我是野的但是野得很優(yōu)美。我的穩(wěn)定與否取決于使用者水平而不是有沒有商業(yè)支持。CentOS?呵呵呵想起來我家水龍頭還沒關(guān),你們聊,我先走了。 Oracle Linux: 我是 RHEL 山寨品,只不過把紅帽換成自己(甲骨文)來收錢。我和 RHEL 一樣又新又穩(wěn)定因為我倆都是破財消災的。
原文鏈接:https://feng.si/posts/2019/07/centos-the-last-linux-distro-you-should-ever-consider/


你可能還喜歡
點擊下方圖片即可閱讀

云原生是一種信仰??

掃碼關(guān)注公眾號
后臺回復?k8s?獲取史上最方便快捷的 Kubernetes 高可用部署工具,只需一條命令,連 ssh 都不需要!


點擊?"閱讀原文"?獲取更好的閱讀體驗!
??給個「在看」,是對我最大的支持??

