廣義的Debian是指一個(gè)致力于創(chuàng)建自由操作系統(tǒng)的合作組織及其作品,由于Debian項(xiàng)目眾多內(nèi)核分支中以Linux宏內(nèi)核為主,而且 Debian開(kāi)發(fā)者 所創(chuàng)建的操作系統(tǒng)中絕大部分基礎(chǔ)工具來(lái)自于GNU工程 ,因此 “Debian” 常指Debian GNU/Linux。
非官方內(nèi)核分支還有只支持x81的Debian GNU/Hurd(Hurd微內(nèi)核),只支持amd14的Dyson(OpenSolaris混合內(nèi)核)等。這些非官方分支都存在一些嚴(yán)重的問(wèn)題,沒(méi)有實(shí)用性,比如Hurd微內(nèi)核在技術(shù)上不成熟,而Dyson則基礎(chǔ)功能仍不完善。
“Debian” 正式發(fā)音為 /?d?.bi.?n/ ,Debian 是國(guó)際化協(xié)作項(xiàng)目,官方未指定任何非英文名稱。
Debian 軟件包管理
高級(jí)包管理工具 aptitude 是目前首選的字符界面的 APT 前端程序。它會(huì)記住哪些包是你安裝的,哪些是為了滿足依賴關(guān)系而安裝的;在不被已安裝包需要的情況下aptitude 會(huì)自動(dòng)卸載后者。它內(nèi)建一套高級(jí)的包過(guò)濾器,但是比較難上手。
synaptic 是目前首選的基于 GTK 的圖形化 APT 前端程序。它的包過(guò)濾器比 aptitude 的好用多了。它包含了對(duì) Debian Package Tags的實(shí)驗(yàn)性支持。
為了減少 Debian 倉(cāng)庫(kù)的網(wǎng)絡(luò)負(fù)擔(dān)和加快你下載的速度,你應(yīng)該從 Debian 鏡像下載。
如果你需要在你本地網(wǎng)絡(luò)的許多臺(tái)機(jī)器上安裝相同的包。在使用 APT 下載包的時(shí)候,請(qǐng)考慮使用squid 來(lái)設(shè)置本地 HTTP 代理。必要的話,可以設(shè)置環(huán)境變量 http_proxy 或者在/etc/apt/apt.conf 里面設(shè)置 http 的值。
盡管 apt_preferences(5) 中描述的 APT 的 pinning 功能非常強(qiáng)大,但造成的影響是難以察覺(jué)和管理的。你應(yīng)該把它作為一個(gè)高級(jí)功能來(lái)看待。
在 chroot, 第 8.1.35 節(jié) 中描述的使用方法非常適合于需要同時(shí)確保系統(tǒng)的穩(wěn)定性和使用最新軟件的情況。
本章節(jié)是基于 Woody 之后的系統(tǒng)寫(xiě)的,某些東西只適合于 Sarge 或更新的系統(tǒng)。
1.1 介紹
如果你沒(méi)有精力閱讀完所有的開(kāi)發(fā)者文檔,那么先看看本章的內(nèi)容,然后開(kāi)始體驗(yàn) Debiantesting/unstable 的威力吧:-)
1.1.1 主要的包管理工具
dpkg – Debian 包安裝工具
apt-get – APT 的命令行前端
aptitude – APT 的高級(jí)的字符和命令行前端
synaptic – 圖形界面的 APT 前端
dselect – 使用菜單界面的包管理工具
tasksel – Task 安裝工具
這些工具不是用來(lái)取代對(duì)方的,比如 dselect 同時(shí)使用 APT 和 dpkg。
APT 使用 /var/lib/apt/lists/* 來(lái)跟蹤可用的軟件包,而 dpkg 使用的是/var/lib/dpkg/available。如果你使用了 aptitude 或者其他 APT 前端來(lái)安裝軟件包,同時(shí)你希望使用 dselect 來(lái)安裝軟件包,請(qǐng)不要忘記使用 dselect 菜單上的 [U]pdate (或者運(yùn)行“dselect update”) 來(lái)更新 /var/lib/dpkg/available。
在處理依賴關(guān)系上 apt-get 會(huì)自動(dòng)下載安裝依賴的軟件包,但是不會(huì)處理所安裝軟件推薦的或者建議的軟件包。
相反 aptitude 可以設(shè)置成安裝所安裝軟件推薦的或者建議的軟件包。
dselect 給使用者列出所安裝軟件推薦或建議的軟件包,可以進(jìn)行單獨(dú)選擇。 參閱 軟件包依賴關(guān)系, 第 2.2.8 節(jié)。
1.1.2 方便的工具
dpkg-reconfigure - 重新配置已安裝的軟件包
(如果它是使用 debconf 進(jìn)行配置的)
dpkg-source - 管理源碼包
dpkg-buildpackage - 自動(dòng)生成包文件
apt-cache - 在本地緩沖區(qū)檢查包文件
1.2 Debian 軟件包管理基礎(chǔ)
1.2.1 設(shè)置 APT
參考 準(zhǔn)備升級(jí)工作, 第 5.2 節(jié) 來(lái)設(shè)置 sources.list。 [34] 請(qǐng)參考 Debian 系統(tǒng)安裝提示, 第 3 章, 發(fā)行版升級(jí)到 stable、testing 或 unstable, 第 5 章, 和 應(yīng)急的編輯器, 第 11.2 節(jié)。
1.2.2 安裝 tasks
你可以安裝一些軟件包集合,這些集合是由使 Debian 系統(tǒng)滿足某些特定用途的典型軟件包組成的。 這些集合被稱為“tasks”。
在初始化安裝中,安裝 tasks 最簡(jiǎn)單的方法就是使用 tasksel。注意在使用之前,你需要運(yùn)行
dselect update
建議使用 aptitude 來(lái)安裝 tasks。 它能讓你在選擇好 tasks 并準(zhǔn)備安裝之前,刪除 tasks 中的某些軟件包。
1.2.3 aptitude
aptitude 是全新的可菜單操作的包安裝工具,和 dselect 類似,但是是針對(duì) APT 從頭設(shè)計(jì)的。從大多數(shù)參數(shù)來(lái)講,aptitude 完全可以作為 apt-get 的一個(gè)兼容的代替品。 參閱 aptitude(1)和 /usr/share/doc/aptitude/README.
一旦開(kāi)始使用 aptitude,你最好繼續(xù)使用它,而不是選擇其他替代工具。否則你將失去aptitude 包存的軟件安裝清單,你就不能享受自動(dòng)刪除多余軟件包的功能了。
全屏狀態(tài)下 aptitude 接受單鍵的命令,大多數(shù)是小寫(xiě)的。主要的幾個(gè)功能鍵如下:
按鍵 動(dòng)作
F10 菜單
? 按鍵命令幫助(完整的清單)
u 更新軟件包信息
+ 標(biāo)記軟件包為升級(jí)或者新安裝
- 標(biāo)記軟件包為刪除(保留配置文件)
_ 標(biāo)記軟件包為完全刪除(刪除配置文件)
= 保持軟件包的當(dāng)前版本,阻止其被升級(jí)
U 標(biāo)記所有可以升級(jí)的軟件包為升級(jí)
g 下載和安裝選擇的軟件包
q 退出當(dāng)前屏幕,保存改變
x 退出當(dāng)前屏幕,忽略改變
Enter 查看一個(gè)軟件包的信息
C 查看一個(gè)軟件包的更新日志
l 改變軟件包樹(shù)狀顯示限制
/ 搜索第一個(gè)匹配的軟件包
重復(fù)最后一次搜索
和 apt-get 一樣, aptitude 安裝軟件包的時(shí)候自動(dòng)解決依賴問(wèn)題。 aptitude 還能安裝即將安裝的軟件包推薦或者建議的軟件包。你通過(guò) F10 -》 選項(xiàng) -》 處理依賴關(guān)系 在菜單上更改這一默認(rèn)設(shè)置。
aptitude 的其他特點(diǎn)如下:
aptitude 能訪問(wèn)所有版本的軟件包。
aptitude 的動(dòng)作記錄在 /var/log/aptitude。
aptitude 能輕松的追蹤陳舊的和本地建立的軟件包,并在“過(guò)期的和在本地創(chuàng)建的軟件包”上列出。
aptitude 內(nèi)建強(qiáng)大的包搜索和顯示功能。熟悉 mutt 的用戶很容易上手,因?yàn)檫@個(gè)顯示方法的靈感來(lái)源于 mutt。 參閱 /usr/share/doc/aptitude/README 中的 “SEARCHING, LIMITING, AND EXPRESSIONS”
aptitude 在全屏狀態(tài)下有嵌入的 su 功能。普通用戶都可以執(zhí)行,直到安裝或刪除軟件的時(shí)候再取得管理員權(quán)限。
1.2.4 dselect
從 stable 發(fā)行到現(xiàn)在為止(包含 Potato),dselect 一直是主要的包維護(hù)工具。對(duì)于 Sarge,你可以考慮用 aptitude 代替。
當(dāng)你啟動(dòng)程序的時(shí)候,dselect 會(huì)自動(dòng)選擇所有“Required”“Important”和“Standard”的包。
dselect 的用戶界面是有些奇怪,但是大部分人已經(jīng)習(xí)慣了。它有四個(gè)主要命令: (指令都是大寫(xiě)的!):
按鍵 動(dòng)作
Q 退出。確認(rèn)當(dāng)前的選擇并退出。
(忽略依賴關(guān)系)
R 撤銷(xiāo)! 我不是那個(gè)意思。
D 不管他!我不管你 dselect 怎么想的,照做就好了!
U 都照建議的來(lái)做
使用 D 和 Q,你可以選擇有沖突的選項(xiàng)。請(qǐng)小心使用這個(gè)命令。
在 /etc/dpkg/dselect.cfg 中加上一行“expert”來(lái)減少干擾。
如果你的機(jī)器運(yùn)行 dselect 的速度很慢,你可以考慮在速度快一點(diǎn)的機(jī)器上運(yùn)行 dselect,確定你要安裝的軟件包之后,在慢的機(jī)器上通過(guò) apt-get 來(lái)安裝它們。
1.2.5 使用 APT 來(lái)維護(hù)發(fā)行版本
請(qǐng)編輯 /etc/apt/preferences 并加入以下內(nèi)容來(lái)維持系統(tǒng)為 testing 版本:
Package: *
Pin: release a=testing
Pin-Priority: 800
Package: *
Pin: release a=stable
Pin-Priority: 100
要注意的是追蹤 testing 版本可能帶來(lái)延誤安裝安全性修正軟件包的副作用。因?yàn)檫@些軟件包都是上傳到 unstable 一段時(shí)間后再移植到 testing
更多復(fù)雜的例子請(qǐng)參考apt_preferences(5),可以讓您做更多的事情,例如安裝 unstable 的軟件包的同時(shí)還能把系統(tǒng)維持在 testing。
關(guān)于限制特定軟件在特定版本上,而其他軟件隨系統(tǒng)升級(jí)的設(shè)置在 examples subdirectory找到,即 preferences.testing 和preferences.unstable。
如果你混用不同的發(fā)行版本,例如 testing 和 stable 或 unstable 和 stable,你終究還是會(huì)安裝上 testing 或 unstale 版本的核心軟件,例如 libc1,這樣作無(wú)法確保系統(tǒng)中沒(méi)有臭蟲(chóng)。你需要特別小心。
另外一個(gè)例子,preferences.stable,會(huì)強(qiáng)制降級(jí)所有的軟件到 stable。
Debian 不支持將某個(gè)軟件包降級(jí)到先前的發(fā)行版本。然而在新的軟件包出問(wèn)題時(shí),你會(huì)發(fā)現(xiàn)你不得不安裝舊的可用的軟件包。你可以在本地的 /var/cache/apt/archives/ 或遠(yuǎn)端的http://snapshot.debian.net/ 中找到先前的版本。請(qǐng)參考 使用 dpkg 救助, 第 1.3.3 節(jié)。
從某個(gè)發(fā)行版本降級(jí)到先前的發(fā)行版本也是不被支持的,而且這樣做往往造成很多問(wèn)題。不過(guò)你愿意冒險(xiǎn)的話,作為最后的手段這樣做也是值得的。
1.2.1 aptitude, apt-get 和 apt-cache 命令
還是以上面使用 testing 發(fā)行版的用戶為例,可使用下列命令來(lái)管系統(tǒng):
aptitude upgrade (或 apt-get upgrade 或 aptitude dist-upgrade 或 apt-get dist-upgrade)
這樣就會(huì)跟隨 testing 版本 — 它們會(huì)跟蹤 testing 版本的更新情況,對(duì)系統(tǒng)上所有軟件包進(jìn)行升級(jí),并從 testing 處重新分析依賴關(guān)系并安裝相關(guān)的包。 [35]
apt-get dselect-upgrade
這個(gè)命令跟蹤 testing 版本 — 根據(jù) dselect 的選擇對(duì)系統(tǒng)上的軟件包進(jìn)行升級(jí)。
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
通過(guò)設(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 選項(xiàng)的作用是在實(shí)際升級(jí)之前將所有將要升級(jí)的軟件包列出,并提示用戶確認(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í),并不是進(jìn)行真正的升級(jí)行為。
1.3 Debian 生存命令
掌握了這些知識(shí),你就能夠享受無(wú)盡的“升級(jí)”了 :-)
1.3.1 檢測(cè)程序錯(cuò)誤尋求幫助
如你使用某個(gè)軟件包出現(xiàn)問(wèn)題,在尋求幫助或發(fā)送錯(cuò)誤報(bào)告之前請(qǐng)確認(rèn)查看過(guò)下列站點(diǎn) (lynx,links 和 w3m 都很好用):
$ lynx http://bugs.debian.org/
$ lynx http://bugs.debian.org/package-name # 如果你知道軟件包的名字
$ lynx http://bugs.debian.org/bugnumber # 如果你知道錯(cuò)誤序號(hào)
在 Google(www.google.com)中使用關(guān)鍵字“site:debian.org”搜索。
如有疑問(wèn),可閱讀幫助文件。設(shè)置 CDPATH 如下:
export CDPATH=。:/usr/local:/usr/share/doc
然后輸入
$ cd packagename
$ pager README.Debian # 如果存在的話
$ mc
更多技術(shù)支持資源列在 Debian 技術(shù)支持, 第 15 章。
1.3.2 APT 升級(jí)錯(cuò)誤以及解決方法
從 unstable/testing 進(jìn)行升級(jí)時(shí)可能出現(xiàn) 升級(jí), 第 5.3 節(jié) 中提到的軟件包關(guān)聯(lián)問(wèn)題。多數(shù)情況下,是因?yàn)樯?jí)的軟件包所需的新增的關(guān)聯(lián)包沒(méi)有安裝。可使用如下方法解決:
# aptitude dist-upgrade
如果這招無(wú)效,可以重復(fù)下面的方法至到問(wèn)題解決:
# aptitude -f upgrade # 即使遇到錯(cuò)誤也繼續(xù) upgrade
或
# aptitude -f dist-upgrade # 即使遇到錯(cuò)誤也繼續(xù) dist-upgrade
一些的確存在問(wèn)題的升級(jí)腳本會(huì)引起持續(xù)出錯(cuò)。最好的解決方法是檢查該軟件包的安裝腳本/var/lib/dpkg/info/packagename.{post-,pre-}{install,removal} 然后運(yùn)行:
# dpkg --configure -a # 配置所有安裝的軟件包
如果腳本報(bào)告缺少配置文件,查看一下 /etc 中相關(guān)的配置文件。如果配置文件有 .dpkg-new 擴(kuò)展名(或其它類似的擴(kuò)展名),去掉(mv)它的擴(kuò)展名。
從 unstable/testing 進(jìn)行升級(jí)時(shí)可能出現(xiàn)軟件包關(guān)聯(lián)問(wèn)題。可用這個(gè)方法智取:
# aptitude -f install package # 重載壞關(guān)聯(lián)
還可以用 equivs 包來(lái)解決此類問(wèn)題。參閱 /usr/share/doc/equivs/README.Debian 和equivs 軟件包, 第 1.5.2 節(jié)。
1.3.3 使用 dpkg 救助
如果你在使用 APT 的時(shí)候遇到死胡同了,那么可以從 Debian 的鏡像站點(diǎn)下載軟件包并使用dpkg 來(lái)安裝。如果你不能訪問(wèn)網(wǎng)絡(luò),可以在 /var/cache/apt/archives/ 中找到被緩存的軟件包。
# dpkg -i fetchmail_1.2.5-4_i381.deb
如果你用這種方法安裝軟件包,但是遇到了依賴問(wèn)題安裝失敗了,并且你確實(shí)需要安裝這個(gè)軟件包。你可以用 dpkg 的 --ignore-depends,--force-depends 和其他參數(shù)來(lái)安裝軟件包。dpkg(8) 有更詳細(xì)的介紹。
1.3.4 恢復(fù)軟件包選擇狀態(tài)的數(shù)據(jù)
如果 /var/lib/dpkg/status 因?yàn)槟撤N原因壞掉了,Debian 系統(tǒng)將會(huì)完全丟失軟件包選擇狀態(tài)的數(shù)據(jù)。趕快到 /var/lib/dpkg/status-old 或 /var/backups/dpkg.status.* 下找找舊的/var/lib/dpkg/status 文件
將 /var/backups/ 放在其它的分區(qū)是個(gè)好習(xí)慣,因?yàn)樵撃夸洶嗽S多非常重要的系統(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),如果需要的話去除一些選項(xiàng)
1.3.5 /var 崩潰之后如何恢復(fù)系統(tǒng)
/var 目錄包含著定時(shí)更新的數(shù)據(jù)如 mail,它們很容易遭破壞。將目錄放到別的分區(qū)可降低風(fēng)險(xiǎn),如果最壞的事情發(fā)生了,可以通過(guò)重建 /var 目錄來(lái)挽救 Debian 系統(tǒng)。
從相同或舊版本的最簡(jiǎn) 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]:該過(guò)程需要更多的實(shí)踐來(lái)檢驗(yàn))
1.3.6為無(wú)法啟動(dòng)的系統(tǒng)安裝軟件包
使用 Debian 急救軟盤(pán) /CD 或從多啟動(dòng) Linux 系統(tǒng)其它分區(qū)啟動(dòng)。 參閱 啟動(dòng)系統(tǒng), 第 8.1 節(jié)。 將無(wú)法啟動(dòng)的系統(tǒng)掛載到 /target 并使用 dpkg 的 chroot 安裝模式。
# dpkg --root /target -i packagefile.deb
接下來(lái)就可以著手配置并解決問(wèn)題。
如是只是由于 lilo 損壞而造系統(tǒng)無(wú)法啟動(dòng),可使用標(biāo)準(zhǔn) Debian 急救盤(pán)啟動(dòng)。假設(shè)你的 root 分區(qū)位于 /dev/hda12 且想使用 runlevel 3,在啟動(dòng)提示符輸入:
boot: rescue root=/dev/hda12 3
這樣,你就可以使用軟盤(pán)中內(nèi)核啟動(dòng)系統(tǒng),新系統(tǒng)的功能基本齊全。(可能丟失某些內(nèi)核特性或模塊)
1.3.7 如果 dpkg 命令出錯(cuò)怎么辦
如果 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
對(duì) i381,亦可用 http://packages.debian.org/dpkg 作為 URL。
1.4 Debian 必殺技
有了這些命令的啟迪,你將會(huì)從無(wú)休止的升級(jí)沖突的地獄中解放出來(lái),達(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
或是用專門(mén)的軟件包命令:
# aptitude install dlocate
# 和 slocate 沖突 (locate 的安全版本)
$ dlocate filename # dpkg -L 和 dpkg -S 的高效代替品
# aptitude install auto-apt # 請(qǐng)求式軟件包安裝工具
# 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)(每個(gè)占一行)
$ dpkg -L package 。 # 列出軟件包安裝的文件的名稱
Woody 發(fā)布版沒(méi)有為 apt-cache showsrc 建檔,但該命令可用:)
你也這可這樣查看軟件包信息(我用 mc 瀏覽):
/var/lib/apt/lists/*
/var/lib/dpkg/available
比較下面的文件可以確切了解最近的安裝過(guò)程對(duì)系統(tǒng)造成了那些改變。
/var/lib/dpkg/status
/var/backups/dpkg.status*
1.4.3 使用 APT 無(wú)人執(zhí)守安裝
使用 APT 無(wú)人執(zhí)守安裝,要在 /etc/apt/apt.conf 中加上一行: /etc/apt/apt.conf:
Dpkg::Options {“--force-confold”;}
另一種等價(jià)的方法是運(yùn)行 apt-get -q -y packagename。這種方法可能產(chǎn)生嚴(yán)重的負(fù)作用,所以使用起來(lái)要小心。參閱 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 對(duì)話框模式,可這么做。
某些程序用于生成特殊的配置腳本。
apt-setup - 創(chuàng)建 /etc/apt/sources.list
install-mbr - 安裝主引導(dǎo)(Master Boot Record)管理器
tzconfig - 設(shè)定本地時(shí)間
gpmconfig - 設(shè)置 gpm 鼠標(biāo) daemon
sambaconfig - 在 Potato 中配置 Samba( Woody 使用 debconf 來(lái)配置)
eximconfig - 配置 Exim (MTA)
texconfig - 配置 teTeX
apacheconfig - 配置 Apache (httpd)
cvsconfig - 配置 CVS
sndconfig - 配置聲音系統(tǒng)
update-alternatives - 設(shè)定默認(rèn)啟動(dòng)命令,例如設(shè)定 vi 啟動(dòng) 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阻止舊軟件包升級(jí)
舉個(gè)例子,要阻止 libc1 和 libc1-dev 通過(guò) dselect 或使用 aptitude install package 命令升級(jí),可執(zhí)行:
# echo -e “l(fā)ibc1 holdnlibc1-dev hold” | dpkg --set-selections
這種方法不影響 aptitude install package 命令操作。要阻止 aptitude upgrade package 或aptitude dist-upgrade 命令對(duì)軟件包執(zhí)行的強(qiáng)制自動(dòng)降級(jí)行為,可在 /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
列出可升級(jí)的軟件包
$ aptitude install `apt-show-versions -u -b | fgrep /unstable`
將所有 unstable 軟件包升級(jí)到最新版本
1.4.8 刪除緩存包文件
使用 APT 安裝軟件包會(huì)在 /var/cache/apt/archives 目錄留下緩存文件,要清除這些文件可使用:
# aptitude autoclean # 僅刪除無(wú)用的包
# aptitude clean # 刪除所有的包
1.4.9 記錄/拷貝系統(tǒng)配置
對(duì)軟件包選擇情況進(jìn)行本地備份:
$ dpkg --get-selections “*” 》myselections # 或使用 *
“*” 使 myselections 包含那些被指定“完全刪除(purge)”的文件。
你可將這個(gè)文件發(fā)送到另一臺(tái)電腦并在那兒按文件中的選擇進(jìn)行軟件包安裝。
# dselect update
# dpkg --set-selections 《myselections
# apt-get -u dselect-upgrade # 或者 dselect install
1.4.10 向 stable 系統(tǒng)引入軟件包
對(duì) stable 系統(tǒng)進(jìn)行部分升級(jí),在軟件運(yùn)行環(huán)境中重新編譯源碼的確是個(gè)誘人的想法,這樣可以避免由于關(guān)聯(lián)關(guān)系不得不對(duì)大量軟件包升級(jí)。首先,將下列鏡像源加入/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 行,實(shí)際上在 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
……或者(沒(méi)有簽名)
$ 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)問(wèn)題。請(qǐng)使用 fakeroot,如是沒(méi)有必要,就別使用 root 帳號(hào)。
在 Woody 中,這些關(guān)聯(lián)問(wèn)題已被簡(jiǎn)化。例如,編譯 pine 源碼包:
# apt-get build-dep pine
# apt-get source -b pine
1.4.11 本地軟件包文件
為了創(chuàng)建與 APT 和 dselect 系統(tǒng)兼容的本地軟件包文件,需要?jiǎng)?chuàng)建 Packages,包中文件要放在特定的目錄樹(shù)中。
Debian 官方包文件喜歡存放于本地 deb 倉(cāng)庫(kù),下面就來(lái)創(chuàng)建倉(cāng)庫(kù):
# 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
還有一種快速但是骯臟的方法來(lái)創(chuàng)建本地 deb 倉(cāng)庫(kù):
# 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)鏡像源入口地址,就可以通過(guò) HTTP 或 FTP 方式遠(yuǎn)程訪問(wèn)存放在其中的包文件了。
1.4.12 轉(zhuǎn)換或安裝外來(lái)的二進(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 自動(dòng)安裝命令
auto-apt 是一種請(qǐng)求式軟件包安裝工具。
$ sudo auto-apt update
。。。 升級(jí)數(shù)據(jù)庫(kù)
$ auto-apt -x -y run
進(jìn)入 auto-apt 模式:/bin/bash
退出這個(gè)命令繼而退出 auto-apt 模式。
$ less /usr/share/doc/med-bio/copyright # 訪問(wèn)不存在的文件
。。。 安裝提供了這個(gè)文件的軟件包。
。。。 同樣安裝依賴的包
1.4.14 校驗(yàn)已安裝的軟件包
debsums 可以校驗(yàn)已安裝軟件包的 MD5 編碼,對(duì)某些軟件包沒(méi)有可用的 MD5 編碼,系統(tǒng)管理員可使用一個(gè)臨時(shí)的解決辦法:
# 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
簡(jiǎn)而言之,我嘗試過(guò)用各種優(yōu)化方法來(lái)創(chuàng)建 sources.list,但任何一種方法對(duì)我這個(gè)住在美國(guó)的人來(lái)說(shuō)都沒(méi)有明顯的改善。最后我還是用 apt-setup 手工選擇近一點(diǎn)的站點(diǎn)。
apt-spy 會(huì)根據(jù)站點(diǎn)回應(yīng)時(shí)間和帶寬自動(dòng)創(chuàng)建 sources.list。netselect-apt 會(huì)創(chuàng)建一個(gè)更完整的 sources.list 文件,但它使用更落后的方法來(lái)選擇鏡像站點(diǎn)(比較 ping 時(shí)間)。
# 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)目錄。對(duì)于某個(gè)引起沖突的文件,可以在 Debian 軟件包腳本中使用 Diversions 將它安裝到別的目錄。系統(tǒng)管理員還可以使用 diversion 來(lái)重載軟件包配置文件,或者用來(lái)保留某些舊配置文件(這些文件沒(méi)有在 conffiles 中登記)當(dāng)安裝新版軟件時(shí)這些文件會(huì)被覆蓋。(參閱 保存本地配置, 第 2.2.4 節(jié))。
# dpkg-divert [--add] filename # 添加 “轉(zhuǎn)移”
# dpkg-divert --remove filename # 刪除 “轉(zhuǎn)移”
記住,不到萬(wà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 來(lái)啟動(dòng) vim,請(qǐng)用 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)中的這些項(xiàng)目,都是以符號(hào)連接的形式存放在 /etc/alternatives下的。
想設(shè)置你喜愛(ài)的 X window 環(huán)境,執(zhí)行 update-alternatives 來(lái)指定 /usr/bin/x-session-manager 和 /usr/bin/x-window-manager。詳情參閱 自定義 X 會(huì)話, 第 9.4.5.1 節(jié)
/bin/sh 是指向 /bin/bash 或 /bin/dash 的鏈接。想兼容舊的 Bash 腳本,使用/bin/bash 比較保險(xiǎn),但更好還是使用/bin/dash,因?yàn)樗?POSIX 標(biāo)準(zhǔn)。升級(jí)到 2.4 版 Linux 內(nèi)核,系統(tǒng)一般將它設(shè)置為/bin/dash。
1.5.4 運(yùn)行級(jí)別 Runlevel
安裝好之后,大部分 Debian 軟件包的服務(wù)被設(shè)定為在 runlevel 2 到 5 時(shí)運(yùn)行。所以,在沒(méi)有定制過(guò)的 Debian 系統(tǒng)中,runleve 2、3、4、5、1 是沒(méi)有區(qū)別的。Debian 保留這些給本地管理員使用。 自定義運(yùn)行級(jí)別, 第 2.4.3 節(jié) 說(shuō)明如何定制 runlevels。 這樣的 runlevels 系統(tǒng)和其他流行的 GNU/Linux 發(fā)行版本完全不同。 你可能要做的改變之一就是取消 runlevel 2 上的xdm 和 gdm,使得在完成啟動(dòng)之后 X 顯示管理去不會(huì)自動(dòng)啟動(dòng);然后你可以通過(guò)切換到 runlevel 3 來(lái)啟動(dòng) X 顯示管理器。
參閱 運(yùn)行級(jí)別, 第 2.4.2 節(jié) 來(lái)獲得更多關(guān)于 runlevels 的信息。
1.5.5 停止 daemon 服務(wù)
Debian 發(fā)行版非常注重系統(tǒng)安全,并期望系統(tǒng)管理員能擔(dān)此重任。它將系統(tǒng)的易用性放在了第二位,許多 daemon 服務(wù)都定位在最高安全級(jí)別,因而,默認(rèn)安裝狀態(tài)下系統(tǒng)只啟動(dòng)最少的(甚至沒(méi)有)可用的服務(wù)。
如果拿不定把握(有關(guān) Exim、DHCP.。。),可執(zhí)行 ps aux 或檢查 /etc/init.d/* 和/etc/inetd.conf 下的內(nèi)容,還可以使用 用 PAM 來(lái)控制登錄, 第 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瀏覽量
11663 -
Debian
+關(guān)注
關(guān)注
0文章
75瀏覽量
1253
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Linux環(huán)境下如何管理Python包管理工具
![Linux環(huán)境下如何<b class='flag-5'>管理</b>Python<b class='flag-5'>包管理</b>工具](https://file1.elecfans.com/web2/M00/94/45/wKgZomTkX7iAOsOiAABRd4-Htfw436.png)
RT-Thread Studio中的RT-Thread Setting中已經(jīng)有軟件包管理和組件服務(wù)管理了,那還需要env工具嗎?
命令終端的常用操作有哪些?軟件包管理機(jī)制是什么
TB-RK3588x預(yù)裝的debian11常用軟件包介紹
debian安裝教程
Linux教程之如何進(jìn)行軟件包管理
Linux Debian 11 Bullseye發(fā)布暫定軟件包凍結(jié)日期計(jì)劃
![Linux <b class='flag-5'>Debian</b> 11 Bullseye發(fā)布暫定<b class='flag-5'>軟件包</b>凍結(jié)日期計(jì)劃](https://file.elecfans.com/web1/M00/B7/4D/o4YBAF5rJNyAD8NNAABNnxYlEaU023.png)
開(kāi)源軟件包管理升級(jí)的多目標(biāo)優(yōu)化方法
如何更新存儲(chǔ)庫(kù)簽名密鑰
什么是Linux軟件包,如何管理它們
在Linux中如何查找軟件包版本
華為云 CodeArts?Artifact:數(shù)字化時(shí)代軟件包管理的領(lǐng)航者
![華為云 CodeArts?Artifact:數(shù)字化時(shí)代<b class='flag-5'>軟件包管理</b>的領(lǐng)航者](https://file1.elecfans.com//web2/M00/B3/F2/wKgaomV2isiAcILmAARwrQZwBHw173.png)
解鎖數(shù)字化時(shí)代的軟件包管理利器—華為云 CodeArts Artifact
![解鎖數(shù)字化時(shí)代的<b class='flag-5'>軟件包管理</b>利器—華為云 CodeArts Artifact](https://file1.elecfans.com//web2/M00/B5/BC/wKgZomV2iuWABK95AARwrRmetDc932.png)
評(píng)論