紅帽企業版 linux(RHEL)和它的社區版分支——CentOS,提供10年的生命週期,這意味着 RHEL/CentOS 的每一個版本會提供長達10年的安全更新。雖然這麼長的生命週期爲企業用戶提供了迫切須要的系統兼容性和可靠性,但也存在一個缺點:隨着底層的 RHEL/CentOS 版本接近生命週期的結束,核心應用和運行時環境變得陳舊過期。例如 CentOS 6.5,它的生命週期結束時間是2020年11月30日,其所攜帶的 Python 2.6.6和 MySQL 5.1.73,以今天的標準來看已經很是古老了。python
另外一方面,在 RHEL/CentOS 上試圖手動升級開發工具鏈和運行時環境存在使系統崩潰的潛在可能,除非全部依賴都被正確解決。一般狀況下,手動升級都是不推薦的,除非你知道你在幹什麼。linux
軟件集Software Collections(SCL)源出現了,以幫助解決 RHEL/CentOS 下的這種問題。SCL 的建立就是爲了給 RHEL/CentOS 用戶提供一種以方便、安全地安裝和使用應用程序和運行時環境的多個(並且多是更新的)版本的方式,同時避免把系統搞亂。與之相對的是第三方源,它們可能會在已安裝的包之間引發衝突。centos
最新的 SCL 提供了:安全
在這篇教程的剩餘部分,我會展現一下如何配置 SCL 源,以及如何安裝和啓用 SCL 中的包。bash
SCL 可用於 CentOS 6.5 及更新的版本。要配置 SCL 源,只需執行:工具
$ sudo yum install centos-release-SCL
要啓用和運行 SCL 中的應用,你還須要安裝下列包:開發工具
$ sudo yum install scl-utils-build
執行下面的命令能夠查看 SCL 中可用包的完整列表:ui
$ yum --disablerepo="*" --enablerepo="scl" list available
既然你已配置好了 SCL,你能夠繼續並從 SCL 中安裝包了。spa
你能夠搜索 SCL 中的包:code
$ yum --disablerepo="*" --enablerepo="scl" search <keyword>
咱們假設你要安裝 Python 3.3。
繼續,就像一般安裝包那樣使用 yum 安裝:
$ sudo yum install python33
任什麼時候候你均可以查看從 SCL 中安裝的包的列表,只需執行:
$ scl --list
SCL 的優勢之一是安裝其中的包不會覆蓋任何系統文件,而且保證不會引發與系統中其它庫和應用的衝突。
例如,若是在安裝 python33 包後檢查默認的 python 版本,你會發現默認的版本並無改變:
$ python --version
若是想使用一個已經安裝的 SCL 包,你須要在每一個命令中使用 scl
命令顯式啓用它(LCTT 譯註:即想在哪條命令中使用 SCL 中的包,就得經過scl
命令執行該命令)
$ scl enable <scl-package-name> <command>
例如,要針對python
命令啓用 python33 包:
$ scl enable python33 'python --version'
若是想在啓用 python33 包時執行多條命令,你能夠像下面那樣建立一個啓用 SCL 的 bash 會話:
$ scl enable python33 bash
在這個 bash 會話中,默認的 python 會被切換爲3.3版本,直到你輸入exit
,退出會話。
簡而言之,SCL 有幾分像 Python 的虛擬環境,但更通用,由於你能夠爲遠比 Python 更多的應用啓用/禁用 SCL 會話。
更詳細的 SCL 指南,參考官方的快速入門指南