廣義的Debian是指一個致力于創(chuàng)建自由操作系統(tǒng)的合作組織及其作品,由于Debian項目眾多內(nèi)核分支中以Linux宏內(nèi)核為主,而且 Debian開發(fā)者 所創(chuàng)建的操作系統(tǒng)中絕大部分基礎(chǔ)工具來自于GNU工程 ,因此 “Debian” 常指Debian GNU/Linux。
非官方內(nèi)核分支還有只支持x81的Debian GNU/Hurd(Hurd微內(nèi)核),只支持amd14的Dyson(OpenSolaris混合內(nèi)核)等。這些非官方分支都存在一些嚴(yán)重的問題,沒有實用性,比如Hurd微內(nèi)核在技術(shù)上不成熟,而Dyson則基礎(chǔ)功能仍不完善。
“Debian” 正式發(fā)音為 /?d?.bi.?n/ ,Debian 是國際化協(xié)作項目,官方未指定任何非英文名稱。
Debian 軟件包管理
高級包管理工具 aptitude 是目前首選的字符界面的 APT 前端程序。它會記住哪些包是你安裝的,哪些是為了滿足依賴關(guān)系而安裝的;在不被已安裝包需要的情況下aptitude 會自動卸載后者。它內(nèi)建一套高級的包過濾器,但是比較難上手。
synaptic 是目前首選的基于 GTK 的圖形化 APT 前端程序。它的包過濾器比 aptitude 的好用多了。它包含了對 Debian Package Tags的實驗性支持。
為了減少 Debian 倉庫的網(wǎng)絡(luò)負(fù)擔(dān)和加快你下載的速度,你應(yīng)該從 Debian 鏡像下載。
如果你需要在你本地網(wǎng)絡(luò)的許多臺機(jī)器上安裝相同的包。在使用 APT 下載包的時候,請考慮使用squid 來設(shè)置本地 HTTP 代理。必要的話,可以設(shè)置環(huán)境變量 http_proxy 或者在/etc/apt/apt.conf 里面設(shè)置 http 的值。
盡管 apt_preferences(5) 中描述的 APT 的 pinning 功能非常強(qiáng)大,但造成的影響是難以察覺和管理的。你應(yīng)該把它作為一個高級功能來看待。
在 chroot, 第 8.1.35 節(jié) 中描述的使用方法非常適合于需要同時確保系統(tǒng)的穩(wěn)定性和使用最新軟件的情況。
本章節(jié)是基于 Woody 之后的系統(tǒng)寫的,某些東西只適合于 Sarge 或更新的系統(tǒng)。
1.1 介紹
如果你沒有精力閱讀完所有的開發(fā)者文檔,那么先看看本章的內(nèi)容,然后開始體驗 Debiantesting/unstable 的威力吧:-)
1.1.1 主要的包管理工具
dpkg – Debian 包安裝工具
apt-get – APT 的命令行前端
aptitude – APT 的高級的字符和命令行前端
synaptic – 圖形界面的 APT 前端
dselect – 使用菜單界面的包管理工具
tasksel – Task 安裝工具
這些工具不是用來取代對方的,比如 dselect 同時使用 APT 和 dpkg。
APT 使用 /var/lib/apt/lists/* 來跟蹤可用的軟件包,而 dpkg 使用的是/var/lib/dpkg/available。如果你使用了 aptitude 或者其他 APT 前端來安裝軟件包,同時你希望使用 dselect 來安裝軟件包,請不要忘記使用 dselect 菜單上的 [U]pdate (或者運行“dselect update”) 來更新 /var/lib/dpkg/available。
在處理依賴關(guān)系上 apt-get 會自動下載安裝依賴的軟件包,但是不會處理所安裝軟件推薦的或者建議的軟件包。
相反 aptitude 可以設(shè)置成安裝所安裝軟件推薦的或者建議的軟件包。
dselect 給使用者列出所安裝軟件推薦或建議的軟件包,可以進(jìn)行單獨選擇。 參閱 軟件包依賴關(guān)系, 第 2.2.8 節(jié)。
1.1.2 方便的工具
dpkg-reconfigure - 重新配置已安裝的軟件包
(如果它是使用 debconf 進(jìn)行配置的)
dpkg-source - 管理源碼包
dpkg-buildpackage - 自動生成包文件
apt-cache - 在本地緩沖區(qū)檢查包文件
1.2 Debian 軟件包管理基礎(chǔ)
1.2.1 設(shè)置 APT
參考 準(zhǔn)備升級工作, 第 5.2 節(jié) 來設(shè)置 sources.list。 [34] 請參考 Debian 系統(tǒng)安裝提示, 第 3 章, 發(fā)行版升級到 stable、testing 或 unstable, 第 5 章, 和 應(yīng)急的編輯器, 第 11.2 節(jié)。
1.2.2 安裝 tasks
你可以安裝一些軟件包集合,這些集合是由使 Debian 系統(tǒng)滿足某些特定用途的典型軟件包組成的。 這些集合被稱為“tasks”。
在初始化安裝中,安裝 tasks 最簡單的方法就是使用 tasksel。注意在使用之前,你需要運行
dselect update
建議使用 aptitude 來安裝 tasks。 它能讓你在選擇好 tasks 并準(zhǔn)備安裝之前,刪除 tasks 中的某些軟件包。
1.2.3 aptitude
aptitude 是全新的可菜單操作的包安裝工具,和 dselect 類似,但是是針對 APT 從頭設(shè)計的。從大多數(shù)參數(shù)來講,aptitude 完全可以作為 apt-get 的一個兼容的代替品。 參閱 aptitude(1)和 /usr/share/doc/aptitude/README.
一旦開始使用 aptitude,你最好繼續(xù)使用它,而不是選擇其他替代工具。否則你將失去aptitude 包存的軟件安裝清單,你就不能享受自動刪除多余軟件包的功能了。
全屏狀態(tài)下 aptitude 接受單鍵的命令,大多數(shù)是小寫的。主要的幾個功能鍵如下:
按鍵 動作
F10 菜單
? 按鍵命令幫助(完整的清單)
u 更新軟件包信息
+ 標(biāo)記軟件包為升級或者新安裝
- 標(biāo)記軟件包為刪除(保留配置文件)
_ 標(biāo)記軟件包為完全刪除(刪除配置文件)
= 保持軟件包的當(dāng)前版本,阻止其被升級
U 標(biāo)記所有可以升級的軟件包為升級
g 下載和安裝選擇的軟件包
q 退出當(dāng)前屏幕,保存改變
x 退出當(dāng)前屏幕,忽略改變
Enter 查看一個軟件包的信息
C 查看一個軟件包的更新日志
l 改變軟件包樹狀顯示限制
/ 搜索第一個匹配的軟件包
重復(fù)最后一次搜索
和 apt-get 一樣, aptitude 安裝軟件包的時候自動解決依賴問題。 aptitude 還能安裝即將安裝的軟件包推薦或者建議的軟件包。你通過 F10 -》 選項 -》 處理依賴關(guān)系 在菜單上更改這一默認(rèn)設(shè)置。
aptitude 的其他特點如下:
aptitude 能訪問所有版本的軟件包。
aptitude 的動作記錄在 /var/log/aptitude。
aptitude 能輕松的追蹤陳舊的和本地建立的軟件包,并在“過期的和在本地創(chuàng)建的軟件包”上列出。
aptitude 內(nèi)建強(qiáng)大的包搜索和顯示功能。熟悉 mutt 的用戶很容易上手,因為這個顯示方法的靈感來源于 mutt。 參閱 /usr/share/doc/aptitude/README 中的 “SEARCHING, LIMITING, AND EXPRESSIONS”
aptitude 在全屏狀態(tài)下有嵌入的 su 功能。普通用戶都可以執(zhí)行,直到安裝或刪除軟件的時候再取得管理員權(quán)限。
1.2.4 dselect
從 stable 發(fā)行到現(xiàn)在為止(包含 Potato),dselect 一直是主要的包維護(hù)工具。對于 Sarge,你可以考慮用 aptitude 代替。
當(dāng)你啟動程序的時候,dselect 會自動選擇所有“Required”“Important”和“Standard”的包。
dselect 的用戶界面是有些奇怪,但是大部分人已經(jīng)習(xí)慣了。它有四個主要命令: (指令都是大寫的!):
按鍵 動作
Q 退出。確認(rèn)當(dāng)前的選擇并退出。
(忽略依賴關(guān)系)
R 撤銷! 我不是那個意思。
D 不管他!我不管你 dselect 怎么想的,照做就好了!
U 都照建議的來做
使用 D 和 Q,你可以選擇有沖突的選項。請小心使用這個命令。
在 /etc/dpkg/dselect.cfg 中加上一行“expert”來減少干擾。
如果你的機(jī)器運行 dselect 的速度很慢,你可以考慮在速度快一點的機(jī)器上運行 dselect,確定你要安裝的軟件包之后,在慢的機(jī)器上通過 apt-get 來安裝它們。
1.2.5 使用 APT 來維護(hù)發(fā)行版本
請編輯 /etc/apt/preferences 并加入以下內(nèi)容來維持系統(tǒng)為 testing 版本:
Package: *
Pin: release a=testing
Pin-Priority: 800
Package: *
Pin: release a=stable
Pin-Priority: 100
要注意的是追蹤 testing 版本可能帶來延誤安裝安全性修正軟件包的副作用。因為這些軟件包都是上傳到 unstable 一段時間后再移植到 testing
更多復(fù)雜的例子請參考apt_preferences(5),可以讓您做更多的事情,例如安裝 unstable 的軟件包的同時還能把系統(tǒng)維持在 testing。
關(guān)于限制特定軟件在特定版本上,而其他軟件隨系統(tǒng)升級的設(shè)置在 examples subdirectory找到,即 preferences.testing 和preferences.unstable。
如果你混用不同的發(fā)行版本,例如 testing 和 stable 或 unstable 和 stable,你終究還是會安裝上 testing 或 unstale 版本的核心軟件,例如 libc1,這樣作無法確保系統(tǒng)中沒有臭蟲。你需要特別小心。
另外一個例子,preferences.stable,會強(qiáng)制降級所有的軟件到 stable。
Debian 不支持將某個軟件包降級到先前的發(fā)行版本。然而在新的軟件包出問題時,你會發(fā)現(xiàn)你不得不安裝舊的可用的軟件包。你可以在本地的 /var/cache/apt/archives/ 或遠(yuǎn)端的http://snapshot.debian.net/ 中找到先前的版本。請參考 使用 dpkg 救助, 第 1.3.3 節(jié)。
從某個發(fā)行版本降級到先前的發(fā)行版本也是不被支持的,而且這樣做往往造成很多問題。不過你愿意冒險的話,作為最后的手段這樣做也是值得的。
1.2.1 aptitude, apt-get 和 apt-cache 命令
還是以上面使用 testing 發(fā)行版的用戶為例,可使用下列命令來管系統(tǒng):
aptitude upgrade (或 apt-get upgrade 或 aptitude dist-upgrade 或 apt-get dist-upgrade)
這樣就會跟隨 testing 版本 — 它們會跟蹤 testing 版本的更新情況,對系統(tǒng)上所有軟件包進(jìn)行升級,并從 testing 處重新分析依賴關(guān)系并安裝相關(guān)的包。 [35]
apt-get dselect-upgrade
這個命令跟蹤 testing 版本 — 根據(jù) dselect 的選擇對系統(tǒng)上的軟件包進(jìn)行升級。
aptitude -R -G install package (或 apt-get install package)
從 testing 版本安裝 package 以及依賴的包。
aptitude -r -G install package
從 testing 版本安裝 package 以及依賴和推薦的包。
aptitude -r -g install package
從 testing 版本安裝 package 以及依賴和建議的包。
aptitude install package/unstable
從 unstable 中安裝 package,并由 testing 版本提供安裝依賴的包。
aptitude install -t unstable package
通過設(shè)置 unstable 的 Pin-Priority 為 990,可以從 unstable 處安裝 package 及其依賴的包。
apt-cache policy foo bar
檢查 foo bar 軟件包的狀態(tài)。
aptitude show foo bar 。| less (或 apt-cache show foo bar 。 | less)
查看 foo bar 。軟件包的有關(guān)信息。
aptitude install foo=2.2.4-1
安裝 foo 軟件包的特定版本 2.2.4-1。
aptitude install foo bar-
安裝 foo 軟件包并刪除 bar 軟件包。
aptitude remove bar
刪除 bar 軟件包,但保留其配置文件。
aptitude purge bar
刪除 bar 軟件包及其所有配置文件。
在上面的例子中使用 -u 選項的作用是在實際升級之前將所有將要升級的軟件包列出,并提示用戶確認(rèn)。下面的操作可將 -u 設(shè)置為默認(rèn)行為:
$ cat 》》 /etc/apt/apt.conf 《《 。
// Always show packages to be upgraded (-u)
APT::Get::Show-Upgraded “true”;
使用 --no-act 可進(jìn)行模擬升級,并不是進(jìn)行真正的升級行為。
1.3 Debian 生存命令
掌握了這些知識,你就能夠享受無盡的“升級”了 :-)
1.3.1 檢測程序錯誤尋求幫助
如你使用某個軟件包出現(xiàn)問題,在尋求幫助或發(fā)送錯誤報告之前請確認(rèn)查看過下列站點 (lynx,links 和 w3m 都很好用):
$ lynx http://bugs.debian.org/
$ lynx http://bugs.debian.org/package-name # 如果你知道軟件包的名字
$ lynx http://bugs.debian.org/bugnumber # 如果你知道錯誤序號
在 Google(www.google.com)中使用關(guān)鍵字“site:debian.org”搜索。
如有疑問,可閱讀幫助文件。設(shè)置 CDPATH 如下:
export CDPATH=。:/usr/local:/usr/share/doc
然后輸入
$ cd packagename
$ pager README.Debian # 如果存在的話
$ mc
更多技術(shù)支持資源列在 Debian 技術(shù)支持, 第 15 章。
1.3.2 APT 升級錯誤以及解決方法
從 unstable/testing 進(jìn)行升級時可能出現(xiàn) 升級, 第 5.3 節(jié) 中提到的軟件包關(guān)聯(lián)問題。多數(shù)情況下,是因為升級的軟件包所需的新增的關(guān)聯(lián)包沒有安裝??墒褂萌缦路椒ń鉀Q:
# aptitude dist-upgrade
如果這招無效,可以重復(fù)下面的方法至到問題解決:
# aptitude -f upgrade # 即使遇到錯誤也繼續(xù) upgrade
或
# aptitude -f dist-upgrade # 即使遇到錯誤也繼續(xù) dist-upgrade
一些的確存在問題的升級腳本會引起持續(xù)出錯。最好的解決方法是檢查該軟件包的安裝腳本/var/lib/dpkg/info/packagename.{post-,pre-}{install,removal} 然后運行:
# dpkg --configure -a # 配置所有安裝的軟件包
如果腳本報告缺少配置文件,查看一下 /etc 中相關(guān)的配置文件。如果配置文件有 .dpkg-new 擴(kuò)展名(或其它類似的擴(kuò)展名),去掉(mv)它的擴(kuò)展名。
從 unstable/testing 進(jìn)行升級時可能出現(xiàn)軟件包關(guān)聯(lián)問題??捎眠@個方法智取:
# aptitude -f install package # 重載壞關(guān)聯(lián)
還可以用 equivs 包來解決此類問題。參閱 /usr/share/doc/equivs/README.Debian 和equivs 軟件包, 第 1.5.2 節(jié)。
1.3.3 使用 dpkg 救助
如果你在使用 APT 的時候遇到死胡同了,那么可以從 Debian 的鏡像站點下載軟件包并使用dpkg 來安裝。如果你不能訪問網(wǎng)絡(luò),可以在 /var/cache/apt/archives/ 中找到被緩存的軟件包。
# dpkg -i fetchmail_1.2.5-4_i381.deb
如果你用這種方法安裝軟件包,但是遇到了依賴問題安裝失敗了,并且你確實需要安裝這個軟件包。你可以用 dpkg 的 --ignore-depends,--force-depends 和其他參數(shù)來安裝軟件包。dpkg(8) 有更詳細(xì)的介紹。
1.3.4 恢復(fù)軟件包選擇狀態(tài)的數(shù)據(jù)
如果 /var/lib/dpkg/status 因為某種原因壞掉了,Debian 系統(tǒng)將會完全丟失軟件包選擇狀態(tài)的數(shù)據(jù)。趕快到 /var/lib/dpkg/status-old 或 /var/backups/dpkg.status.* 下找找舊的/var/lib/dpkg/status 文件
將 /var/backups/ 放在其它的分區(qū)是個好習(xí)慣,因為該目錄包含了許多非常重要的系統(tǒng)數(shù)據(jù)。
如果舊的 /var/lib/dpkg/status 文件也壞了,仍可以從 /usr/share/doc/ 下的目錄進(jìn)行恢復(fù)這些信息。
# ls /usr/share/doc |
grep -v [A-Z] |
grep -v ‘^texmf$’ |
grep -v ‘^debian$’ |
awk ‘{print $1 “ install”}’ |
dpkg --set-selections
# dselect --expert # 重新安裝系統(tǒng),如果需要的話去除一些選項
1.3.5 /var 崩潰之后如何恢復(fù)系統(tǒng)
/var 目錄包含著定時更新的數(shù)據(jù)如 mail,它們很容易遭破壞。將目錄放到別的分區(qū)可降低風(fēng)險,如果最壞的事情發(fā)生了,可以通過重建 /var 目錄來挽救 Debian 系統(tǒng)。
從相同或舊版本的最簡 Debian 系統(tǒng)中取得 /var 目錄的內(nèi)容框架,例如 var.tar.gz,然后它放入受損系統(tǒng)的 root 目錄,接著
# cd /
# mv var var-old # 如果里面還有其他有用資料的話
# tar xv*** var.tar.gz # 使用 Woody 框架文件
# aptitude # 或是用 dselect
上述步驟可使系統(tǒng)恢復(fù)工作。使用 恢復(fù)軟件包選擇狀態(tài)的數(shù)據(jù), 第 1.3.4 節(jié) 中描述的技術(shù)加速軟件包選擇數(shù)據(jù)的恢復(fù)。([FIXME]:該過程需要更多的實踐來檢驗)
1.3.6為無法啟動的系統(tǒng)安裝軟件包
使用 Debian 急救軟盤 /CD 或從多啟動 Linux 系統(tǒng)其它分區(qū)啟動。 參閱 啟動系統(tǒng), 第 8.1 節(jié)。 將無法啟動的系統(tǒng)掛載到 /target 并使用 dpkg 的 chroot 安裝模式。
# dpkg --root /target -i packagefile.deb
接下來就可以著手配置并解決問題。
如是只是由于 lilo 損壞而造系統(tǒng)無法啟動,可使用標(biāo)準(zhǔn) Debian 急救盤啟動。假設(shè)你的 root 分區(qū)位于 /dev/hda12 且想使用 runlevel 3,在啟動提示符輸入:
boot: rescue root=/dev/hda12 3
這樣,你就可以使用軟盤中內(nèi)核啟動系統(tǒng),新系統(tǒng)的功能基本齊全。(可能丟失某些內(nèi)核特性或模塊)
1.3.7 如果 dpkg 命令出錯怎么辦
如果 dpkg 損壞就不能安裝任何 .deb 文件。下面的操作可幫助你修復(fù)這種狀況。(在第一行,你可將“l(fā)inks”替換成你喜歡的瀏覽器。)
$ links http://http.us.debian.org/debian/pool/main/d/dpkg/
下載完好的 dpkg_version_arch.deb
$ su
password: *****
# ar x dpkg_version_arch.deb
# mv data.tar.gz /data.tar.gz
# cd /
# tar x***v data.tar.gz
對 i381,亦可用 http://packages.debian.org/dpkg 作為 URL。
1.4 Debian 必殺技
有了這些命令的啟迪,你將會從無休止的升級沖突的地獄中解放出來,達(dá)到 Debian 天堂。 :-)
1.4.1 文件信息
在已安裝的軟件包中許找特定文件所屬的軟件包:
$ dpkg {-S|--search} pattern
或者搜索 Debian archive:
$ wget http://ftp.us.debian.org/debian/dists/sarge/Contents-i381.gz
$ zgrep -e pattern Contents-i381.gz
或是用專門的軟件包命令:
# aptitude install dlocate
# 和 slocate 沖突 (locate 的安全版本)
$ dlocate filename # dpkg -L 和 dpkg -S 的高效代替品
# aptitude install auto-apt # 請求式軟件包安裝工具
# auto-apt update # 為 auto-apt 建立 db 文件
$ auto-apt search pattern
# 在所有軟件包中搜索 pattern,不論安裝與否
1.4.2 軟件包信息
搜索并顯示包文件的信息。編輯 /etc/apt/sources.list,讓 APT 指向正確的包文件。如果想了解 testing/unstable 中的相應(yīng)軟件包與當(dāng)前系統(tǒng)安裝的軟件包有何差別,使用 apt-cache policy — 更好。
# apt-get check # 更新緩沖區(qū)并檢查損壞的軟件包
$ apt-cache search pattern # 按文本描述搜索軟件包
$ apt-cache policy package # 軟件包的 priority/dists 信息
$ apt-cache show -a package # 顯示所有 dists 中軟件包描述信息
$ apt-cache showsrc package # 顯示相應(yīng)源碼包的信息
$ apt-cache showpkg package # 軟件包調(diào)試信息
# dpkg --audit|-C # 搜索未完成安裝的軟件包
$ dpkg {-s|--status} package 。 # 已安裝軟件包描述
$ dpkg -l package 。 # 已安裝軟件包的狀態(tài)(每個占一行)
$ dpkg -L package 。 # 列出軟件包安裝的文件的名稱
Woody 發(fā)布版沒有為 apt-cache showsrc 建檔,但該命令可用:)
你也這可這樣查看軟件包信息(我用 mc 瀏覽):
/var/lib/apt/lists/*
/var/lib/dpkg/available
比較下面的文件可以確切了解最近的安裝過程對系統(tǒng)造成了那些改變。
/var/lib/dpkg/status
/var/backups/dpkg.status*
1.4.3 使用 APT 無人執(zhí)守安裝
使用 APT 無人執(zhí)守安裝,要在 /etc/apt/apt.conf 中加上一行: /etc/apt/apt.conf:
Dpkg::Options {“--force-confold”;}
另一種等價的方法是運行 apt-get -q -y packagename。這種方法可能產(chǎn)生嚴(yán)重的負(fù)作用,所以使用起來要小心。參閱 apt.conf(5)和 dpkg(1)。
安裝完畢以后,可以用 重新配置已安裝的軟件包, 第 1.4.4 節(jié) 中的方法配置特定的軟件包。
1.4.4 重新配置已安裝的軟件包
使用下列方法重新配置已安裝的軟件包。
# dpkg-reconfigure --priority=medium package
# dpkg-reconfigure --all # 重新配置所有的軟件包
# dpkg-reconfigure locales # 生成額外的 locales
# dpkg-reconfigure --p=low xserver-xfree81 # 重新配置 X 服務(wù)器
如果你想永久改變 debconf 對話框模式,可這么做。
某些程序用于生成特殊的配置腳本。
apt-setup - 創(chuàng)建 /etc/apt/sources.list
install-mbr - 安裝主引導(dǎo)(Master Boot Record)管理器
tzconfig - 設(shè)定本地時間
gpmconfig - 設(shè)置 gpm 鼠標(biāo) daemon
sambaconfig - 在 Potato 中配置 Samba( Woody 使用 debconf 來配置)
eximconfig - 配置 Exim (MTA)
texconfig - 配置 teTeX
apacheconfig - 配置 Apache (httpd)
cvsconfig - 配置 CVS
sndconfig - 配置聲音系統(tǒng)
update-alternatives - 設(shè)定默認(rèn)啟動命令,例如設(shè)定 vi 啟動 vim
update-rc.d - System-V init 腳本管理工具
update-menus - Debian 菜單系統(tǒng)
1.4.5 刪除和清除軟件包
刪除軟件包但保留其配置文件:
# aptitude remove package 。
# dpkg --remove package 。
刪除軟件包并清除配置文件:
# aptitude purge package 。
# dpkg --purge package 。
1.4.6阻止舊軟件包升級
舉個例子,要阻止 libc1 和 libc1-dev 通過 dselect 或使用 aptitude install package 命令升級,可執(zhí)行:
# echo -e “l(fā)ibc1 holdnlibc1-dev hold” | dpkg --set-selections
這種方法不影響 aptitude install package 命令操作。要阻止 aptitude upgrade package 或aptitude dist-upgrade 命令對軟件包執(zhí)行的強(qiáng)制自動降級行為,可在 /etc/apt/preferences中加上:
Package: libc1
Pin: release a=stable
Pin-Priority: 2000
這里“Package:”后不能使用通配符如“l(fā)ibc1*”,如果要保持所有與 glibc 源碼包相關(guān)的二進(jìn)制包的版本同步,可以明確的列出它們。
該命令可以顯示處于“阻止”狀態(tài)的軟件包:
dpkg --get-selections “*”|grep -e “hold$”
1.4.7 stable/testing/unstable 混合系統(tǒng)
apt-show-versions 可以列出發(fā)行版中可用軟件包的版本
$ apt-show-versions | fgrep /testing | wc
你有多少 testing 軟件包
$ apt-show-versions -u
列出可升級的軟件包
$ aptitude install `apt-show-versions -u -b | fgrep /unstable`
將所有 unstable 軟件包升級到最新版本
1.4.8 刪除緩存包文件
使用 APT 安裝軟件包會在 /var/cache/apt/archives 目錄留下緩存文件,要清除這些文件可使用:
# aptitude autoclean # 僅刪除無用的包
# aptitude clean # 刪除所有的包
1.4.9 記錄/拷貝系統(tǒng)配置
對軟件包選擇情況進(jìn)行本地備份:
$ dpkg --get-selections “*” 》myselections # 或使用 *
“*” 使 myselections 包含那些被指定“完全刪除(purge)”的文件。
你可將這個文件發(fā)送到另一臺電腦并在那兒按文件中的選擇進(jìn)行軟件包安裝。
# dselect update
# dpkg --set-selections 《myselections
# apt-get -u dselect-upgrade # 或者 dselect install
1.4.10 向 stable 系統(tǒng)引入軟件包
對 stable 系統(tǒng)進(jìn)行部分升級,在軟件運行環(huán)境中重新編譯源碼的確是個誘人的想法,這樣可以避免由于關(guān)聯(lián)關(guān)系不得不對大量軟件包升級。首先,將下列鏡像源加入/etc/apt/sources.list:
deb-src http://http.us.debian.org/debian testing
main contrib non-free
deb-src http://http.us.debian.org/debian unstable
main contrib non-free
由于屏幕輸出的限制,上述每條 deb-src 命令均分成了 2 行,實際上在 sources.list 中它們均為單行。
然后下載源碼并在本地生成軟件包:
$ apt-get update # 更新軟件包搜索列表
$ apt-get source package
$ dpkg-source -x package.dsc
$ cd package-version
。。。 查找需要的軟件包(編譯所需的關(guān)聯(lián)包列在.dsc文件中)并安裝它們,
你還需要“fakerroot”軟件包。
$ dpkg-buildpackage -rfakeroot
……或者(沒有簽名)
$ dpkg-buildpackage -rfakeroot -us -uc # 如果需要,再使用“debsign”
……然后安裝
$ su -c “dpkg -i packagefile.deb”
通常,需要安裝一些帶 “-dev” 后綴的軟件包以滿足關(guān)聯(lián)關(guān)系。debsign 在 devscripts 軟件包中。auto-apt 可以輕松解決這些關(guān)聯(lián)問題。請使用 fakeroot,如是沒有必要,就別使用 root 帳號。
在 Woody 中,這些關(guān)聯(lián)問題已被簡化。例如,編譯 pine 源碼包:
# apt-get build-dep pine
# apt-get source -b pine
1.4.11 本地軟件包文件
為了創(chuàng)建與 APT 和 dselect 系統(tǒng)兼容的本地軟件包文件,需要創(chuàng)建 Packages,包中文件要放在特定的目錄樹中。
Debian 官方包文件喜歡存放于本地 deb 倉庫,下面就來創(chuàng)建倉庫:
# aptitude install dpkg-dev
# cd /usr/local
# install -d pool # 軟件包存放的物理地址
# install -d dists/unstable/main/binary-i381
# ls -1 pool | sed ‘s/_.*$/ priority section/’ | uniq 》 override
# 編輯 override # 調(diào)整 priority and section
# dpkg-scanpackages pool override /usr/local/
》 dists/unstable/main/binary-i381/Packages
# cat 》 dists/unstable/main/Release 《《 EOF
Archive: unstable
Version: 3.0
Component: main
Origin: Local
Label: Local
Architecture: i381
EOF
# echo “deb file:/usr/local unstable main”
》》 /etc/apt/sources.list
還有一種快速但是骯臟的方法來創(chuàng)建本地 deb 倉庫:
# aptitude install dpkg-dev
# mkdir /usr/local/debian
# mv /some/where/package.deb /usr/local/debian
# dpkg-scanpackages /usr/local/debian /dev/null |
gzip - 》 /usr/local/debian/Packages.gz
# echo “deb file:/usr/local/debian 。/” 》》 /etc/apt/sources.list
在 /etc/apt/sources.list 中設(shè)置相應(yīng)鏡像源入口地址,就可以通過 HTTP 或 FTP 方式遠(yuǎn)程訪問存放在其中的包文件了。
1.4.12 轉(zhuǎn)換或安裝外來的二進(jìn)制軟件包
alien 可將其它格式的二進(jìn)制軟件包如 Redhat 的 rpm、Stampede 的 slp 、Slackware 的tgz 和 Solaris 的 pkg 等轉(zhuǎn)化成 Debian 的 deb 格式軟件包,如果你想在自己的系統(tǒng)上使用別的 Linux 發(fā)行版中的軟件包,可使用 alien 將它轉(zhuǎn)化成系統(tǒng)首選的軟件包格式后安裝。alien 還支持 LSB 的軟件包。
1.4.13 自動安裝命令
auto-apt 是一種請求式軟件包安裝工具。
$ sudo auto-apt update
。。。 升級數(shù)據(jù)庫
$ auto-apt -x -y run
進(jìn)入 auto-apt 模式:/bin/bash
退出這個命令繼而退出 auto-apt 模式。
$ less /usr/share/doc/med-bio/copyright # 訪問不存在的文件
。。。 安裝提供了這個文件的軟件包。
。。。 同樣安裝依賴的包
1.4.14 校驗已安裝的軟件包
debsums 可以校驗已安裝軟件包的 MD5 編碼,對某些軟件包沒有可用的 MD5 編碼,系統(tǒng)管理員可使用一個臨時的解決辦法:
# cat 》》/etc/apt/apt.conf.d/90debsums
DPkg::Post-Install-Pkgs {“xargs /usr/bin/debsums -sg”;};
^D
per Joerg Wendland joergland@debian.org (untested)。
1.4.15 優(yōu)化 sources.list
簡而言之,我嘗試過用各種優(yōu)化方法來創(chuàng)建 sources.list,但任何一種方法對我這個住在美國的人來說都沒有明顯的改善。最后我還是用 apt-setup 手工選擇近一點的站點。
apt-spy 會根據(jù)站點回應(yīng)時間和帶寬自動創(chuàng)建 sources.list。netselect-apt 會創(chuàng)建一個更完整的 sources.list 文件,但它使用更落后的方法來選擇鏡像站點(比較 ping 時間)。
# aptitude install apt-spy
# cd /etc/apt ; mv sources.list sources.list.org
# apt-spy -d testing -l sources.apt
1.5 其他 Debian 的特性
1.5.1 dpkg-divert 命令
使用文件轉(zhuǎn)移(diversions)的方法可以強(qiáng)令 dpkg 將文件安裝到 轉(zhuǎn)移 目錄而非默認(rèn)目錄。對于某個引起沖突的文件,可以在 Debian 軟件包腳本中使用 Diversions 將它安裝到別的目錄。系統(tǒng)管理員還可以使用 diversion 來重載軟件包配置文件,或者用來保留某些舊配置文件(這些文件沒有在 conffiles 中登記)當(dāng)安裝新版軟件時這些文件會被覆蓋。(參閱 保存本地配置, 第 2.2.4 節(jié))。
# dpkg-divert [--add] filename # 添加 “轉(zhuǎn)移”
# dpkg-divert --remove filename # 刪除 “轉(zhuǎn)移”
記住,不到萬不得已不要使用 dpkg-divert。
1.5.2 equivs 軟件包
如果你從源碼編譯程序,最好將它做成本地 Debian 化軟件包(*.deb)。最新的方法是使用equivs。
Package: equivs
Priority: extra
Section: admin
Description: Circumventing Debian package dependencies
This is a dummy package which can be used to create Debian
packages, which only contain dependency information.
1.5.3 Alternative 命令
如果想用 vi 來啟動 vim,請用 update-alternatives:
# update-alternatives --display vi
。。。
# update-alternatives --config vi
Selection Command
-----------------------------------------------
1 /usr/bin/elvis-tiny
2 /usr/bin/vim
*+ 3 /usr/bin/nvi
Enter to keep the default[*], or type selection number: 2
Debian alternatives 系統(tǒng)中的這些項目,都是以符號連接的形式存放在 /etc/alternatives下的。
想設(shè)置你喜愛的 X window 環(huán)境,執(zhí)行 update-alternatives 來指定 /usr/bin/x-session-manager 和 /usr/bin/x-window-manager。詳情參閱 自定義 X 會話, 第 9.4.5.1 節(jié)
/bin/sh 是指向 /bin/bash 或 /bin/dash 的鏈接。想兼容舊的 Bash 腳本,使用/bin/bash 比較保險,但更好還是使用/bin/dash,因為它更符合 POSIX 標(biāo)準(zhǔn)。升級到 2.4 版 Linux 內(nèi)核,系統(tǒng)一般將它設(shè)置為/bin/dash。
1.5.4 運行級別 Runlevel
安裝好之后,大部分 Debian 軟件包的服務(wù)被設(shè)定為在 runlevel 2 到 5 時運行。所以,在沒有定制過的 Debian 系統(tǒng)中,runleve 2、3、4、5、1 是沒有區(qū)別的。Debian 保留這些給本地管理員使用。 自定義運行級別, 第 2.4.3 節(jié) 說明如何定制 runlevels。 這樣的 runlevels 系統(tǒng)和其他流行的 GNU/Linux 發(fā)行版本完全不同。 你可能要做的改變之一就是取消 runlevel 2 上的xdm 和 gdm,使得在完成啟動之后 X 顯示管理去不會自動啟動;然后你可以通過切換到 runlevel 3 來啟動 X 顯示管理器。
參閱 運行級別, 第 2.4.2 節(jié) 來獲得更多關(guān)于 runlevels 的信息。
1.5.5 停止 daemon 服務(wù)
Debian 發(fā)行版非常注重系統(tǒng)安全,并期望系統(tǒng)管理員能擔(dān)此重任。它將系統(tǒng)的易用性放在了第二位,許多 daemon 服務(wù)都定位在最高安全級別,因而,默認(rèn)安裝狀態(tài)下系統(tǒng)只啟動最少的(甚至沒有)可用的服務(wù)。
如果拿不定把握(有關(guān) Exim、DHCP.。。),可執(zhí)行 ps aux 或檢查 /etc/init.d/* 和/etc/inetd.conf 下的內(nèi)容,還可以使用 用 PAM 來控制登錄, 第 9.2.1 節(jié) 中提到的方法檢查/etc/hosts.deny。pidof 命令也很有用(參閱 pidof(8))
在最近的 Debian 系統(tǒng)中,默認(rèn)狀態(tài)下 X11 不允許 TCP/IP(遠(yuǎn)程)連接。參閱 在 TCP/IP 中使用 X, 第 9.4.1 節(jié),使用 SSH 進(jìn)行 X 傳送也是禁用的,參閱 聯(lián)接遠(yuǎn)程的 X 服務(wù)器 – ssh, 第 9.4.8 節(jié)
-
軟件包
+關(guān)注
關(guān)注
0文章
104瀏覽量
11626 -
Debian
+關(guān)注
關(guān)注
0文章
75瀏覽量
1206
發(fā)布評論請先 登錄
相關(guān)推薦
評論