從源代碼安裝軟件
由於 CentOS 且備一個完整的軟件開發環境,普遍來說並沒有重要的障礙能夠阻止你將 tar.gz 或 tar.bz2 解壓,然後編譯及安裝這些軟件。這個所謂 ../configure; make; sudo make install 的方法,在欠缺良好包裝系統的環境下無可避免是要用的。
然而除非你有絕對必要,否則不應這樣做的原因有好幾個。此外你亦須留心數個警告。
1. 弊處
CentOS 是關乎穩定性,不是關乎最新軟件。
- CentOS 所提供的軟件是基於穩定性而選被上的 —— 除了軟件本身要穩定外,它亦必須與其它已安裝的軟件「好好相處」。
- 一個常見的異議是這樣:「但是 x.y.1 版軟件內的安全性漏洞在 version x.z.1 內已經去除了!」
- 這也許是事實。但通常 x.z.1 版本並會比 x.y.1 擁有更多功能,而它們可能會破壞軟件預期的特性。
安全性更新都會被反向移植到 CentOS 上所安裝的版本裡。你可以用 rpm -q --changelog package 來檢查。
- 「但我絕對須某某軟件,而它並不連帶在 CentOS 內。」
很可能其他人已經為你包裝好了。有數個 CentOS 維護及第三方的軟件庫內已收錄了大量在 CentOS 上運行的套件。
- 「但我需要某某軟件是 x.y.z 版的」
你很可能是在找尋一個較前衛的發行版本,或者正在跟隨一份由不熟練的作者所撰寫的教學文檔,因為確切的版本很少會有實際影響。
較新的版本很可能會(甚至乎:一定會)破壞其它軟件對原有版本的依賴;那些堅持要最新版 python 或 glibc 的人們經常會碰到這個問題,因為 python 及核心程式庫在 CentOS 發行模式中的大部份應用程式套件內是最基本的。可惜的是,單單取代預先包套好的內容已足夠破壞一個系統到無法修復的地步,導致必須重裝。
2. 利處
如果你完全無法找到所需的套件,那麼就是時候考慮你要如何建立及安裝這個軟件。
包裝 RPM 並不太困難。
- 如果你親自包裝軟件,它容許你作簡易更新,因為你不必記住如何如何設定那個軟件 —— 一切都在 spec 檔案內。
- RPM 會知道關於你剛建立的軟件,所以你可以安裝那些依賴它的軟件。
- 這樣做方便追究軟件的依賴、供應及需求。
你可以將你的套件提供給其它人。某些軟件庫樂於加載按照他們的原則包裝的軟件。
3. 警告
切勿因為你認為有絕對需要用較新版本的軟件,而嘗試安裝那些在 CentOS 內已包含源代碼套件的軟件。這樣做會造成破壞。
當你遁這個方向走,你便踏離了由發行版本提供的自動安全性更新的範圍。你將要獨力承擔修正、重新編譯、及安裝軟件等責任。
假若你真的、真的、真的需要這樣做,請嘗試與軟件並存,例如安裝在 /opt 或在 /usr/local/ 內。
如果你需要 perl 模塊,切勿使用 CPAN,因為這樣做多數會破壞你的 perl 安裝。請嘗試利用 cpan2rpm 來包裝 perl 模塊,也或者利用 fedora-rpmdevtools 提供給 perl 模塊用的 spec 範本。同樣的忠告亦適用於 python。很多獨立的包裝者在過往亦須要解決同樣的問題,因此你應該考慮採用他們軟件庫內的程式或源代碼套件。
fedora-rpmdevtools 已被收錄在 kbs-CentOS-Extras 軟件庫內。見「軟件庫」。它們亦可幫助你建立一般的 rpm。
4. 結論
切勿從源代碼建立軟件,儘可能使用其它軟件庫。假若你需要親自建立軟件:自製套件。假若你無法自製套件:將軟件安裝在一個不會產生衡突的位置。 永遠不要取替 CentOS 附帶的軟件。
另外請記得: 如果系統損壞了,你要獨自收拾殘局。舉例說,IRC 頻道將不會提供任何支援。
Translation of revision 9