CentOS上更優(yōu)的第三方倉庫
從 Software Collections、EPEL 和 Remi 獲得可靠的 CentOS 新版軟件。
在 Red Hat 企業(yè) Linux(RHEL) 上,提供那些早已老掉牙的軟件已經(jīng)是企業(yè)級(jí)軟件廠商的傳統(tǒng)了。這倒不是因?yàn)樗麄儜校_實(shí)是用戶需要。很多公司像看待家具一樣看待軟件:我買一張桌子,能用一輩子,軟件不應(yīng)該也這樣嗎?
CentOS 作為 RHEL 的復(fù)制品有著同樣的遭遇。雖然 Red Hat 還在為這些被廠商拋棄的過時(shí)軟件提供支持、修補(bǔ)安全漏洞等,但如果你的應(yīng)用依賴新版軟件,你就得想辦法了。 我在這個(gè)問題上不止一次碰壁。 LAMP 組合里任一個(gè)組件都需要其它所有組件能與其兼容,這有時(shí)就顯得很麻煩。 比如說去年我就被 RHEL/CentOS 折騰得夠嗆。REHL/CentOS 第 6 版***支持 PHP 5.3 ,第 7 版支持到 PHP 5.4 。而 PHP 5.3 早在 2014 年 8 月就到達(dá) EOL(End Of Life) ,不再被廠商支持了, PHP 5.4 的 EOL 在 2015 年 9 月, 5.5 則是 2016 年 7 月。 有太多古老的軟件版本,包括 MySQL、Python 等,它們應(yīng)該像木乃伊一樣被展示在博物館里,但它們卻活在你的系統(tǒng)上。
那么,可憐的管理員們?cè)撛趺崔k呢?如果你跑著 RHEL/CentOS ,那應(yīng)該先試試 Software Collections,因?yàn)檫@是 Red Hat 唯一支持的新軟件包源。 Software Collections 為 CentOS 設(shè)立了專門的倉庫,安裝和管理都和其它第三方倉庫一樣。但如果你用的是 RHEL 的,情況就有點(diǎn)不同了,具體請(qǐng)參考 RHEL 的解決方法。Software Collections 同樣支持 Fedora 和 Scientific Linux 。
安裝 Software Collections
在 CentOS 6/7 上安裝 Software Collections 的命令如下:
- $ sudo yum install centos-release-scl
centos-release-scl-rh 可能作為依賴包被同時(shí)安裝。
然后就可以像平常一樣搜索、安裝軟件包了:
- $ yum search php7
- [...]
- rh-php70.x86_64 : Package that installs PHP 7.0
- [...]
- $ sudo yum install rh-php70
***一件事就是啟用你的新軟件包:
- $ scl enable rh-php70 bash
- $ php -v
- PHP 7.0.10
此命令會(huì)開啟一個(gè)新的 bash 并配置好環(huán)境變量以便運(yùn)行新軟件包。 如果需要的話,你還得安裝對(duì)應(yīng)的擴(kuò)展包,比如對(duì)于 Python 、PHP、MySQL 等軟件包,有些配置文件也需要修改以指向新版軟件(比如 Apache )。
這些 SCL 軟件包在重啟后不會(huì)激活。SCL 的設(shè)計(jì)初衷就是在不影響原有配置的前提下,讓新舊軟件能一起運(yùn)行。不過你可以通過 ~/.bashrc 加載 SCL 提供的 enable 腳本來實(shí)現(xiàn)自動(dòng)啟用。 SCL 的所有軟件包都安裝在 /opt 下, 以我們的 PHP 7 為例,在 ~/.bashrc 里加入一行:
- source /opt/rh/rh-php70/enable
以后相應(yīng)的軟件包就能在重啟后自動(dòng)啟用了。有新軟件保駕護(hù)航,你終于可以專注于自己的業(yè)務(wù)了。
列出可用軟件包
那么,到底 Software Collections 里都是些什么呢? centos-release-scl 里有一些由社區(qū)維護(hù)的額外的軟件包。除了在 CentOS Wiki 查看軟件包列表外,你還可以使用 Yum 。我們先來看看安裝了哪些倉庫:
- $ yum repolist
- [...]
- repo id repo name
- base/7/x86_64 CentOS-7 - Base
- centos-sclo-rh/x86_64 CentOS-7 - SCLo rh
- centos-sclo-sclo/x86_64 CentOS-7 - SCLo sclo
- extras/7/x86_64 CentOS-7 - Extras
- updates/7/x86_64 CentOS-7 - Updates
Yum 沒有專門用來打印某一個(gè)倉庫中所有軟件包的命令,所以你得這樣來: (LCTT 譯注:實(shí)際上有,yum repo-pkgs REPO list,需要 root 權(quán)限,dnf 同)
- $ yum --disablerepo "*" --enablerepo centos-sclo-rh \
- list available | less
--disablerepo 與 --enablerepo 選項(xiàng)的用法沒有詳細(xì)的文檔,這里簡單說下。 實(shí)際上在這個(gè)命令里你并沒有禁用或啟用什么東西,而只是將你的搜索范圍限制在某一個(gè)倉庫內(nèi)。 此命令會(huì)打印出一個(gè)很長的列表,所以我們用管道傳遞給 less 輸出。
EPEL
強(qiáng)大的 Fedora 社區(qū)為 Feora 及所有 RHEL 系的發(fā)行版維護(hù)著 EPEL:Extra Packages for Enterprise Linux 。 里面包含一些***軟件包以及一些未被發(fā)行版收納的軟件包。安裝 EPEL 里的軟件就不用麻煩 enable 腳本了,直接像平常一樣用。你還可以用 --disablerepo 和 --enablerepo 選項(xiàng)指定從 EPEL 里安裝軟件包:
- $ sudo yum --disablerepo "*" --enablerepo epel install [package]
Remi Collet
Remi Collet 在 Remi 的 RPM 倉庫 里維護(hù)著大量更新的和額外的軟件包。需要先安裝 EPEL ,因?yàn)?Remi 倉庫依賴它。
CentOS wiki 上有較完整的倉庫列表:更多的第三方倉庫 ,用哪些,不用哪些,里面都有建議。