Linux各個發行版的技術上雖然有差別,但一般不至於有很大鴻溝,實際上更復雜的其實是各個發行版的維護社區的工作方式和交流文化的差別,如果不了解去利用相應的社區資源,就會覺得維護這個發行版異常吃力,從而產生“XXX發行版不好用”的錯覺。
因為工作原因最近我接觸維護的系統多為CentOS,之前對CentOS的印象都是“又古老又難維護”,不過幾個月的積累下來,發現RH系的社區資源並不比Debian/Ubuntu的少,只不過是國內的維護文化和他們的相去甚遠,幾乎無法兼容,以致很多人都缺乏了解,所以覺得需要撰文列舉下這些資源。
以下很多第三方倉庫都在Centos Wiki有介紹。
維護倉庫的通常是一群維護者,有個論壇、郵件列表等,有什麼需求,或者有什麼BUG,可以直接去和維護者溝通。下面都是列出了主頁的一些倉庫,留意主頁的鏈接可以找到交流方法了。
默認安裝的CentOS的yum,/etc/yum.repos.d/CentOS-Base.repo是基本的源倉庫;裡面各個倉庫名下mirrorlist是官方列表,yum的fastestmirror插件會從其中選擇一個來更新;而如果注釋了mirrorlist寫baseurl,就只從這一個倉庫更新了。可以參考163源的CentOS5-Base-163.repo。
這些是CentOS/RedHat官方維護的,就是那些“老舊過時”而且“幾乎什麼都沒”,只要不是出現嚴重漏洞都不會更新那些。
Fedora和Redhat的關系就不詳述了,就是FedoraProject裡有個“EPEL Special Interest Group”,為EPEL系維護的一個社區倉庫,基本上加上這個倉庫後就能豐富了整個EPEL生態了,在Debian系裡面“理所當然源裡就有”的那些軟件就會有了,比如openvpn,htop,ipcalc,git ... 雖然版本不會很新,但起碼能用了。
用法:安裝這些鏈接頁面裡面的.rpm。
這個倉庫說提供的是FedoraProject跟RedHat都不想提供的程序,提供的分類就知道怎麼回事了,基本都是Sound and Video,Games and Entertainment,Hardware Support等等。首先是Linux平台下多媒體支持方面的版權問題非常復雜,ffmpeg/x264等通常都有一些爭議行的授權,當然也有nvidia/ati等硬件的閉源驅動、Oracle的閉源版Virtualbox等,把他們獨立出來避免爭端。
另外這個倉庫基本提供的更新都是for Fedora,EPEL5/6的幾乎沒更新。可以說RPMFusion是個“桌面倉庫”,而且國內163源提供了RPMFusion的鏡像
用法: 見Configuration
原叫RPMForge,和CentOS社區較緊密,提供的包也比較海量的,很難評價分什麼方向,CentOS Wiki專門有頁面提供安裝指導,因為包的數量太海量了很難和“FedoraProject for EPEL”做比較。
用法: 見Usage
這個倉庫依賴EPEL。
提供了php54 / mysql55 / firefox 等等的更新,選的軟件比較符合Web開發者工作的需要,當然服務器最好也是維護相同版本。這個倉庫使用了github來管理軟件包的spec,可以直接看他提供了什麼包。更新非常緊貼各個軟件的官方發布。
用法: 安裝主頁相應的remi-release-XX.rpm
CentOS本來的維護團隊,有趣的一點是這倉庫基本全在-testing裡面提供軟件包。
這是重點推薦的。這不是一個倉庫,是很多個。裡面的軟件包和上述那些倉庫不大一樣,都是在/opt下建立一套專用的目錄,避免在/usr裡面打架的軟件包;這裡提供了php/python/ruby/perl/mysql/postgre/apache等常用“服務器生態”。
用法:各個Collection的repo鏈接。
上述的只是FedoraHosted內一個子倉庫,FedoraHosted是類似Ubuntu的PPA社區的環境,維護者可以通過建立自己的帳號然後建立一些自選軟件的倉庫。裡面應該還有很多有用的東西待發掘。
一樣是類似Ubuntu的PPA,不過這裡就多數偏向Fedora的更新,也有些有EPEL6。
這個倉庫主要提供EPEL 3/4/5等舊版本的一些包的更新,有php,python的第三方模塊、qt、squid等的更新,大概還是偏向更新服務器環境的吧。
用法:保存http://devel.pramberger.at/getrepo?release=<version>到/etc/yum.repos.d,注意替換release參數(3|4|5)。
偏內核的新硬件支持模塊。
提供PHP, Python, MySQL更新,不過感覺更新不夠Remi緊密。
/etc/yum.repos.d/下的文件記錄著各個倉庫的信息,上述很多倉庫在安裝之後會在這裡生成一個.repo,但裡面的倉庫不一定被啟用了,裡面可能寫了enabled=0。
一般來說,為了避免系統升級時候和第三方的包出現沖突,第三方的倉庫都應該enabled=0,在需要使用、查找其中軟件時候,使用yum的參數:
yum --enablerepo=remi install firefox-langpack-fr
一定需要定制編譯特定軟件時候,這些倉庫都提供SRPM倉庫的,但是默認可能沒開啟。(yumdownloader需要安裝yum-utils)
yumdownloader --enablerepo=epel-source --source php
http://www.pixelbeat.org/docs/packaging.html
更多RedHat相關信息見RedHat 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=10
更多CentOS相關信息見CentOS 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=14