CentOS 何時才不算是 CentOS
Contents
1. 你說我的 CentOS 不是 CentOS 是甚麼意思?
我被轉介到這頁,因為其他人說我的 CentOS 版本不是 CentOS。你可以解釋一下嗎?
(首先,如有得罪之處,敬請見諒 —— 我們只想透過明確遘通來節省時間!)
我們發現有很多人聲稱提供 CentOS,但事實上只是「建基」於 CentOS。這些系統已根據供應者的特定用途而被修改。Linux VPS(虛擬個人伺服器)供應商有時會採用 CPanel 或 Plesk 等網站寄存軟件,或是 Virtuozzo 或 OpenVZ 等虛擬化軟件作出相關修改。
這些軟件計劃以 CentOS 作為基礎發行版本,但添加或修改 CentOS 發行的核心元件。就以 OpenVZ 為例,它須要一個不是由 CentOS 提供的內核,而 CPanel 就提供自己改版的 Apache 及 PHP。
儘管這個做法能滿足供應者的需要,當你在 CentOS 的官方及非官方渠道尋求協助時卻會帶來問題。
不少提供協助的人們從過往的經驗及挫敗中發現,某些求助的用戶採用了「改版」的 CentOS,而相關的軟件及設定檔與預期的有很大差異。一個常見的答覆可能是「你應該在 {某路徑} 的檔案內將 {這設定} 改為 {那設定},以便修正問題……」,但該檔案卻不存於所指定的路徑,又或者檔案內容與 CentOS 所發行的不符。
這不單令提供支援變得十分費力,更有可能因為遵從我們的建議而損壞供應商的安裝。
因此,要是你認為你所採用的 CentOS 已被 VPS 供應商或網頁寄存商修改,敬請 向他們尋求協助。
要是你的問題涉及特定軟件,例如 PHP 或 Apache,你也可考慮在專屬支援渠道求助。
2. 我如何判斷我擁有 CentOS 還是「改版」CentOS?
你可以從數方面快速檢查你是否擁有 CentOS。請核對下列各點來確定你擁有 CentOS,而不是被修改版本:
2.1. 內核
CentOS 的內核永遠使用一致的方法來命名。請使用 uname -r 這個指令來檢查你在使用哪個內核。
CentOS 5 機器應該輸出 2.6.18-419.el5,CentOS 6 應該輸出 2.6.32-642.15.1.el6,而 CentOS 7 應輸出 3.10.0-514.10.2.el7(這些是截至 2017-03-19 的版本)。內核的版本會經常採用 kernelversion-kernelrelease.centosrelease 這個結構。以 CentOS 5 為例,kernelversion 必定是 2.6.18,CentOS 6 是 2.6.32,CentOS 7 是 3.10.0,並且在每個發行版本的生命週期中維持不變。kernelrelease 普遍是單一個數目或是三個以點號分隔的數目。centosrelease 在 CentOS 5 上必定是 el5,CentOS 6 是 el6,CentOS 7 是 el7。
如果你的內核版本內含有 stab 這個字串及看似 2.6.18-92.1.13.el5.028stab059.6,那麼你擁有一個由你的供應商所提供,而非 CentOS 計劃建立的內核。stab 意味著該內核源自以 OpenVZ 為基礎的虛擬化計劃。它不是 CentOS 所提供的內核,因此你所使用的並非 CentOS,而很可能是被修改版本。
2.2. 每間斷地存取 CentOS 計劃發行的更新
一個正版的 CentOS 系統可以在任何時候利用 CentOS 的鏡像發佈系統免費進行更新。這個步驟一般是透過以 root 的身份執行 yum update 指令來完成。我們特別提及這個要求是因為安全性修正是不會同期發行的,因此 CentOS 計劃亦會隨著這個套件被建立起來及通過測試而將這些更新發行在鏡像上。詳情請參閱這裡的討論。
2.3. Yum 設定檔
CentOS 的另一個核心部份就是 yum 指令的設定。在一台正版的 CentOS 系統上,yum 設定會指向 CentOS 鏡像。要檢查這點,執行 rpm -qV yum 及 rpm -qV centos-release 這兩個指令。rpm -qV 這個指令會檢查一個 RPM 套件的內容,並顯示任何涉及該套件內的檔案的改動。
在一個標準的 CentOS 發行版本上,rpm -qV 這個指令應該不會傳回任何輸出。如果這些指令傳回輸出,那應有些檔案曾被修改,而你很大機會不是在使用正版的 CentOS。慣常出現的改動包括排除某些套件(多數做在 /etc/yum.conf 裡),或者取代標準的 CentOS 軟件庫(這些是在 /etc/yum.repos.d/CentOS-Base.repo 內定義的)。
2.4. 被更換的核心套件
很多以 CentOS 為基礎的 VPS 更換某些核心套件。Perl、Apache、PHP 及 MySQL 是常見的例子。下游供應商有時會在 yum 設定檔為某些套件加入 exclude=,執行以下指令可顯示它們出來:
grep -ri exclude /etc/yum.*
假如你是由於無法安裝(舉個例說)某個 Perl 或 PHP 模塊而被轉介到這頁,你很大機會擁有該套件的非標準版本。
要引證這個問題,你應該先檢查問題套件的版本,然後比較 CentOS 的 base 及 updates 軟件庫內所提供的套件版本。譬如說,CentOS 5 的各個套件版本分別為 Apache 2.2.3、PHP 5.1.6 及 Perl 5.8.8;CentOS 6 的是 Apache 2.2.15、php 5.3.3 及 perl 5.10.1;最後,CentOS 7 的是 Apache 2.4.6、php 5.4.16 及 perl 5.16.3。此外,你亦可以用 rpm -qV 來檢查所安裝的套件是否有檔案被修改了。
3. 這又如何?既然它建基於 CentOS,為何你不會支援我?
如上所說,這些改版 CentOS 將發行版本的主要部份改掉。CentOS 團隊沒有參予在這些改動中,因此並不知道更改的內容或幅度。我們所提供的建議都建基於使用 CentOS 計劃提供的 CentOS 而累積的知識及經驗。這些建議有可能違反你的主機代管供應商的服務協議,甚至乎損壞你的系統。正因如此,我們無法為你提供支援。
4. 我已檢查,並確定所採用的是 CentOS!
很好!有些 VPS 供應商 的確 提供未被修改的 CentOS,你可能是其中一位幸運者!請選用最方法的渠道尋求協助。要是你再度被指向此網頁,請解釋你已遵從此指引,並肯定機主沒有修改你的安裝。
5. 好,我沒有 CentOS。現在怎樣辦?
基本上你有四個選擇。
假若你的主機代管供應商聲稱提供 CentOS,第一個選擇就是要求他們如此做。要不然,你可以找另一間提供 CentOS 的供應商。
如果你的問題涉及特定軟件,請從專屬的支援渠道求助。(例如 Freenode IRC 上的 ##php or #perl)
第三個選擇就是沿用現有的非標準 CentOS 安裝。但由於上述所解釋的原因,這意味著你不能以 CentOS 社區作為支援。你必需與你的改版 CentOS 供應商協商穫取支援。
第四個選擇就是親自修改你的非標準 CentOS 安裝,令它看似一台正版的 CentOS 安裝。zh-tw/TipsAndTricks/BrokenVserver 頁裡提供了更多有關如何這樣做的資訊。假如你因損壞系統或違反服務協議而導致資料或金錢上的損失,我們不會負責任。
Translation of revision 22