dpkg使用解析
下載 以及所有依賴的包裹,同時進(jìn)行包裹的安裝或升級。如果某個包裹被設(shè)置了 hold (停止標(biāo)志),就會被擱在一邊(即不會被升級).更多 hold 細(xì)節(jié)請看下面. --purge 指明這個包裹應(yīng)該被完全清除 (purged) ,更多信息請看 dpkg -P .
apt-get update
升級來自Debian鏡像的包裹列表,如果你想安裝當(dāng)天的任何軟件,至少每天運(yùn)行一次,而且每次修改了
/etc/apt/sources.list 后,必須執(zhí)行.
apt-get upgrade [-u]
升級所有已經(jīng)安裝的包裹為最新可用版本。不會安裝新的或移除老的包裹。如果一個包改變了倚賴關(guān)系而需要安裝一個新的包裹,那么它將不會被升級,而是標(biāo)志為 hold .apt-get update 不會升級被標(biāo)志為 hold 的包裹 (這個也就是hold的意思).請看下文如何手動設(shè)置包裹為 hold .我建議同時使用 '-u' 選項(xiàng),因?yàn)檫@樣你就能看到哪些包裹將會被升級.
apt-get dist-upgrade [-u]
和 apt-get upgrade 類似,除了 dist-upgrade 會安裝和移除包裹來滿足倚賴關(guān)系。因此具有一定的危險(xiǎn)性.
顯示許多細(xì)節(jié),以及和其它包裹的關(guān)系. dselect
console-apt
aptitude
gnome-apt
APT 的幾個圖形前端(其中一些在使用前得先安裝).這里 dselect 無疑是最強(qiáng)大的,也是最古老,最難駕馭. 普通Dpkg用法
安裝一個Debian包裹文件;如你手動下載的文件.
移除一個已安裝的包裹.
完全清除一個已安裝的包裹。和remove不同的是,remove只是刪掉數(shù)據(jù)和可執(zhí)行文件,purge另外還刪除所有的配制文件.
列出安裝的所有文件清單。同時請看dpkg-c來檢查一個.deb文件的內(nèi)容. 顯示已安裝包裹的信息。同時請看apt-cache顯示Debian存檔中的包裹信息,以及dpkg-I來顯示從一個.deb文件中提取的包裹信息.
重新配制一個已經(jīng)安裝的包裹,如果它使用的是 debconf (debconf 為包裹安裝提供了一個統(tǒng)一的配制界面).你能夠重新配制 debconf 它本身,如你想改變它的前端或提問的優(yōu)先權(quán)。例如,重新配制 debconf ,使用一個 dialog 前端,簡單運(yùn)行:
dpkg-reconfigure --frontend=dialog debconf (如果你安裝時選錯了,這里可以改回來喲)
echo " hold" | dpkg --set-selections 設(shè)置 的狀態(tài)為 hold (命令行方式) 取的 的當(dāng)前狀態(tài) (命令行方式) Debian:~# dpkg --get-selections *wine*
libwine hold
libwine-alsa hold
libwine-arts hold
libwine-dev hold
libwine-nas hold
libwine-print hold
libwine-twain hold
wine hold
wine+ hold
wine-doc hold
wine-utils hold
例如:
大家現(xiàn)在用的都是 gaim-0.58 + QQ-plugin,為了防止 gaim 被升級,我們可以采用如下方法: 方法一:
Debian:~# echo "gaim hold" | dpkg --set-selections
然后用下面命令檢查一下:
Debian:~# dpkg --get-selections "gaim"
gaim hold
現(xiàn)在的狀態(tài)標(biāo)志是 hold,就不能被升級了.
如果想恢復(fù)怎么辦呢?
Debian:~# echo "gaim install" | dpkg --set-selections
Debian:~# dpkg --get-selections "gaim"
gaim install
這時狀態(tài)標(biāo)志又被重置為 install,可以繼續(xù)升級了.
同志們會問,這些狀態(tài)標(biāo)志都寫在哪個文件中呢?
在 /var/lib/dpkg/status 里,你也可以通過修改這個文件實(shí)現(xiàn) hold.
有時你會發(fā)現(xiàn)有的軟件狀態(tài)標(biāo)志是 purge,不要奇怪.
如:事先已經(jīng)安裝了 amsn, 然后把它卸了. apt-get remove --purge amsn
那么狀態(tài)標(biāo)志就從 install 變成 purge.
方法二:
在/etc/apt 下手動建一個 preferences 文件
內(nèi)容:
Package: gaim
Pin: version 0.58*
保存
dpkg -S
在包裹數(shù)據(jù)庫中查找 ,并告訴你哪個包裹包含了這個文件.(注:查找的是事先已經(jīng)安裝的包裹)
從源碼建立deb packages
下載一個源碼的包并解開。
你必須在你的/etc/apt/sources.list文件里寫入一條 deb-src 的記錄才能完成這項(xiàng)工作。
如果你輸入了一個-b參數(shù),并且是以root的身份,deb包會被自動的創(chuàng)建。
自動下載并安裝通過源碼創(chuàng)建 時需要的包。 只有apt 0.5以上版本才支持這個功能。
現(xiàn)在woody和以上版本包含了這個功能。
如果你使有一個舊版本的apt,查找依賴性最簡單的方法是查看源碼包中 debian/control 這個文件,
注意這個路徑是相對的,是包內(nèi)的路徑。
普通的用法,結(jié)合 apt-get source -b,例子 (as root):
會下載源碼包,建立依賴性,然后嘗試編譯源碼。
如果你手工下載了一個程序的源碼包,其中包含了幾個類似 .orig.tar.gz , .dsc ,
以及 .diff.gz 之類的文件,
那么你就可以對 .dsc 文件使用這個命令來 unpack 源碼包。
dpkg-buildpackage
從 Debian 源碼樹建立一個deb包。你必須在source tree的主目錄才能生效。例如:
dpkg-buildpackage -rfakeroot -uc -b
這里 '-rfakeroot' 指定命令使用 fakeroot 程序來模仿 root 權(quán)限 (來實(shí)現(xiàn)所有者(ownership)目的), '-uc' 表示 "Don't cryptographically sign the changelog", '-b' 代表只建立二進(jìn)制包.
debuild
一個快速打包腳本類似 dpkg-buildpackage ,能自動的識別是否使用 fakeroot,
同時為你運(yùn)行 lintian 和 gpg
修正倚賴關(guān)系
dpkg --configure --pending
如果dpkg在apt-get install upgrade dist-uptradeing 的時候出錯退出,
嘗試使用此命令來配置已經(jīng)unpack的包。
然后再用 apt-get install ,upgrade, or dist-upgrade -f ,
然后再用 apt-get install, upgrade, or dist-upgrade.
可能會重復(fù)多次,這樣通常可以解決大多數(shù)的依賴性問題。
(同時,如果提示由于某種原因需要某個特定的包裹,你可以常識安裝或卸載這個包)
apt-get install -f
apt-get upgrade -f
apt-get dist-upgrade -f
嘗試修正上述過程中出現(xiàn)依賴性關(guān)系
注意 apt-get install -f 不需要 作為參數(shù)。