CentOS: 永遠(yuǎn)有多遠(yuǎn)就離它多遠(yuǎn)

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

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

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

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


你可能還喜歡
點(diǎn)擊下方圖片即可閱讀

云原生是一種信仰??

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


點(diǎn)擊?"閱讀原文"?獲取更好的閱讀體驗(yàn)!
??給個(gè)「在看」,是對(duì)我最大的支持??

