紅帽企業版 linux(rhel)和它的社群版分支——centos,提供10年的生命周期,這意味着 rhel/centos 的每個版本會提供長達10年的安全更新。雖然這麼長的生命周期為企業使用者提供了迫切需要的系統相容性和可靠性,但也存在一個缺點:随着底層的 rhel/centos 版本接近生命周期的結束,核心應用和運作時環境變得陳舊過時。例如 centos 6.5,它的生命周期結束時間是2020年11月30日,其所攜帶的 python 2.6.6和 mysql 5.1.73,以今天的标準來看已經非常古老了。
另一方面,在 rhel/centos 上試圖手動更新開發工具鍊和運作時環境存在使系統崩潰的潛在可能,除非所有依賴都被正确解決。通常情況下,手動更新都是不推薦的,除非你知道你在幹什麼。

最新的 scl 提供了:
python 3.3 和 2.7
php 5.4
node.js 0.10
ruby 1.9.3
perl 5.16.3
mariadb 和 mysql 5.5
apache httpd 2.4.6
在這篇教程的剩餘部分,我會展示一下如何配置 scl 源,以及如何安裝和啟用 scl 中的包。
<a></a>
scl 可用于 centos 6.5 及更新的版本。要配置 scl 源,隻需執行:
<code>$ sudo yum install centos-release-scl</code>
要啟用和運作 scl 中的應用,你還需要安裝下列包:
<code>$ sudo yum install scl-utils-build</code>
執行下面的指令可以檢視 scl 中可用包的完整清單:
<code>$ yum --disablerepo="*" --enablerepo="scl" list available</code>
既然你已配置好了 scl,你可以繼續并從 scl 中安裝包了。
你可以搜尋 scl 中的包:
<code>$ yum --disablerepo="*" --enablerepo="scl" search <keyword></code>
我們假設你要安裝 python 3.3。
繼續,就像通常安裝包那樣使用 yum 安裝:
<code>$ sudo yum install python33</code>
任何時候你都可以檢視從 scl 中安裝的包的清單,隻需執行:
<code>$ scl --list</code>
<code></code>
<code>python33</code>
scl 的優點之一是安裝其中的包不會覆寫任何系統檔案,并且保證不會引起與系統中其它庫和應用的沖突。
例如,如果在安裝 python33 包後檢查預設的 python 版本,你會發現預設的版本并沒有改變:
<code>$ python --version</code>
<code>python 2.6.6</code>
如果想使用一個已經安裝的 scl 包,你需要在每個指令中使用 <code>scl</code> 指令顯式啟用它(lctt 譯注:即想在哪條指令中使用 scl 中的包,就得通過<code>scl</code>指令執行該指令)
<code>$ scl enable <scl-package-name> <command></code>
例如,要針對<code>python</code>指令啟用 python33 包:
<code>$ scl enable python33 'python --version'</code>
<code>python 3.3.2</code>
如果想在啟用 python33 包時執行多條指令,你可以像下面那樣建立一個啟用 scl 的 bash 會話:
<code>$ scl enable python33 bash</code>
在這個 bash 會話中,預設的 python 會被切換為3.3版本,直到你輸入<code>exit</code>,退出會話。
簡而言之,scl 有幾分像 python 的虛拟環境,但更通用,因為你可以為遠比 python 更多的應用啟用/禁用 scl 會話。
本文來自雲栖社群合作夥伴“linux中國”
原文釋出時間為:2013-04-02.