如何在Debian中啟用測試版/不穩定版的軟體庫
為何要啟用測試版/不穩定版?
測試版/不穩定版的Debian給開發者提供了一個比當前穩定版更新的環境以及軟體。你們注意到了麼?其實這些穩定版啊不穩定版啊神馬的都是別名,比方說穩定版其實就是Debian的穩定發行版,而測試版將會是下一個Debian的穩定發行版(當然那是測試後的事了)。截至發稿為止,當前Debian的穩定發行版是Wheezy 7.x,將會成為下一個穩定版的測試版則是Jessie。
當你需要一款應用的最新版本的時候,啟用測試版/不穩定版將會是不二的選擇。當初我因為工作需要,要安裝個Apache的 2.4.x到我的Debian Wheezy。測試版需要的是2.4.x的,可是我的軟體庫裡面只有2.2.x的。所以最好的解決方案當時是將測試版下下來啦。
通常來說當我們想嘗試最新版本的應用時,都應該只在測試版軟體庫中搜索。
(題圖來源[1])
在這篇文章裡我將教大家如何在不弄壞你係統的前提下設定好測試、不穩定版的Debain系統並在上面安裝軟體。
Stable < Testing < Unstable (穩定 < 測試版 < 不穩定版) Wheezy < Jessie < Sid
1. 設定測試版/不穩定版的apt源
第一步是把測試版/不穩定版的源加到你的sources.list檔案裡。在Debian Wheezy系統上,/etc/apt/sources.list理應長得像這樣:
$ cat /etc/apt/sources.list
... deb http://security.debian.org/ wheezy/updates main deb http://http.us.debian.org/debian/ wheezy main deb-src http://security.debian.org/ wheezy/updates main ...
把你repo伺服器的連結記下來,比如:http://http.us.debian.org/debian/
這個repo伺服器將會是離你最近的一個伺服器; 在不同的地理位置會有不同的url,這個將會用於下一步。
如果想加測試/不穩定源,則需要在sources.list檔案加上這些東西:
# Testing repository - main, contrib and non-free branches deb http://http.us.debian.org/debian testing main non-free contrib deb-src http://http.us.debian.org/debian testing main non-free contrib # Testing security updates repository deb http://security.debian.org/ testing/updates main contrib non-free deb-src http://security.debian.org/ testing/updates main contrib non-free # Unstable repo main, contrib and non-free branches, no security updates here deb http://http.us.debian.org/debian unstable main non-free contrib deb-src http://http.us.debian.org/debian unstable main non-free contrib
格式將會是
deb <respository server/mirror> <repository name> <sub branches of the repo> (deb <上一步弄的伺服器或映象url> <repo的名字> <repo底下的分支>)
當然啦,除了用testing或者unstable這麼爛的詞,也能使用他們的發行版代號,比如Jessie或者Sid
deb http://http.us.debian.org/debian jessie main non-free contrib deb http://security.debian.org/ jessie/updates main contrib non-free deb http://http.us.debian.org/debian sid main non-free contrib
2. 釘住 apt!這非常重要
在加了測試/不穩定的repo之後,當你更新系統的時候所有安裝過並且可用的軟體就會立馬更新,而後你的系統就被你玩火自焚了。
所以需要設定一些規則,以便選定的軟體包在正常的更新時不會被更新到一個不穩定的測試版本。
我們需要使用“釘住APT”的方式來告訴apt系統,除了我們希望使用測試版或不穩定版的特定軟體包之外,其它的總是使用穩定版的軟體包來更新。
可以通過如下兩個檔案之一來設定如何設定APT的優先順序來“釘住”。
/etc/apt/preferences 或 /etc/apt/preferences.d/my_preferences
開啟這兩個檔案之一(如果沒有的話就建立一個),然後輸入如下內容:
Package: * Pin: release a=stable Pin-Priority: 700 Package: * Pin: release a=testing Pin-Priority: 650 Package: * Pin: release a=unstable Pin-Priority: 600
前面我們提到過,穩定版指的是你當前的debian版本,測試版是下一個,而不穩定版則是更遠的將來發行版。上面的設定中最主要的是優先順序(Pin-Priority)。當前的穩定版應該有最高的優先順序,這就是說,正常的apt-get操作只會從當前的穩定版的軟體庫(現在是wheezy)裡面安裝軟體。
更新包快取
在增加了新的軟體庫和指定了優先規則後,需要更新一下包快取。
$ sudo apt-get update
確認APT規則
我們必須確認“釘住”的設定正確,優先順序也沒問題。使用 apt-cache 的 policy 引數來檢查:
$ apt-cache policy apache2 apache2: Installed: (none) Candidate: 2.2.22-13 Version table: 2.4.7-1 0 600 http://http.us.debian.org/debian/ unstable/main amd64 Packages 2.4.6-3 0 650 http://http.us.debian.org/debian/ testing/main amd64 Packages 2.2.22-13 0 700 http://http.us.debian.org/debian/ wheezy/main amd64 Packages
如上的輸出,確認在wheezy 穩定版中, 2.2.22 版本的Apache是選定的版本,它有最高的優先順序。
3. 從測試版/不穩定版軟體庫中安裝軟體
現在可以從測試版或不穩定版中選擇一個特定的軟體來安裝它了。假如說我們要從測試版軟體源中安裝 apache2。
有兩個不同的方法,並且其結果也有所不同。
方式一
# apt-get install apache2/testing
上述命令會從測試版軟體庫中安裝 apache2,並從穩定版軟體庫中安裝其依賴包(穩定版通過apt規則確定)。這個命令在某些情況下會失敗,比如安裝的軟體包(apache2)所需的依賴包在穩定版軟體庫中沒有更新到可以支援該軟體時。
方式二
# apt-get -t testing install apache2
上述命令會從測試版軟體庫中安裝apache2,並從測試版軟體庫中安裝其依賴包。這要比上面的命令工作的更好。
所以,要安裝較新的軟體包,直接從測試版/不穩定版的軟體庫中安裝就行了。注意,優先順序號碼不只是一個數字而已,還有其特定意義。可以檢視 apt_preferences的man頁面瞭解更多:
$ man 5 apt_preferences
總結
使用“釘住”方式的測試版/不穩定版的軟體庫是一個獲取較新版本軟體包的一個好辦法,不過其實並不推薦使用它們。如果弄錯了,可能會從也許不相容的分支上下載軟體包,這會把你的系統搞亂。
一個更好的方式是,使用向後移植的軟體庫來安裝更新的包。它從測試版和不穩定版的軟體庫中獲取較新版本的軟體包,但是為當前的穩定版軟體庫而編譯。所以,對於 debian wheezy來說,你可以使用wheezy-backports 軟體庫。訪問http://backports.debian.org/ 瞭解更多。