dpkg【Debian Package】

「dpkg 」是「Debian Package 」的簡寫。爲 「Debian」 專門開發的套件管理系統,方便軟件的安裝、更新及移除。全部源自「Debian」的「Linux 」發行版都使用 「dpkg」,例如 「Ubuntu」、「Knoppix 」等。前端

目錄
        1    簡介
        2    用法
        3    解析
數據庫


1    簡介
「dpkg」是「Debian Package」的簡寫。dpkg是Debian軟件包管理器的基礎,它被伊恩·默多克建立於1993年。dpkg與RPM十分類似,一樣被用於安裝、卸載和供給.deb軟件包相關的信息。dpkg自己是一個底層的工具。上層的工具,如APT,被用於從遠程獲取軟件包以及處理複雜的軟件包關係。
2    用法
dpkg的用法[1]
1)安裝軟件
命令行:dpkg -i <.deb file name>
示例:dpkg -i avg71flm_r28-1_i386.deb
2)安裝一個目錄下面全部的軟件包
命令行:dpkg -R
示例:dpkg -R /usr/local/src
3)釋放軟件包,可是不進行配置
命令行:dpkg –-unpack package_file 若是和-R一塊兒使用,參數能夠是一個目錄
示例:dpkg –-unpack avg71flm_r28-1_i386.deb
4)從新配置和釋放軟件包
命令行:dpkg –configure package_file
若是和-a一塊兒使用,將配置全部沒有配置的軟件包
示例:dpkg –configure avg71flm_r28-1_i386.deb
5)刪除軟件包(保留其配置信息)
命令行:dpkg -r
示例:dpkg -r avg71flm
6)替代軟件包的信息
命令行:dpkg –update-avail <Packages-file>
7)合併軟件包信息
dpkg –merge-avail <Packages-file>
8)從軟件包裏面讀取軟件的信息
命令行:dpkg -A package_file
9)刪除一個包(包括配置信息)
命令行:dpkg -P
10)丟失全部的Uninstall的軟件包信息
命令行:dpkg –forget-old-unavail
11)刪除軟件包的Avaliable信息
命令行:dpkg –clear-avail
12)查找只有部分安裝的軟件包信息
命令行:dpkg -C
13)比較同一個包的不一樣版本之間的差異
命令行:dpkg –compare-versions ver1 op ver2
14)顯示幫助信息
命令行:dpkg –help
15)顯示dpkg的Licence
命令行:dpkg –licence (or) dpkg –license
16)顯示dpkg的版本號
命令行:dpkg --version
17)創建一個deb文件
命令行:dpkg -b directory [filename]
18)顯示一個Deb文件的目錄
命令行:dpkg -c filename
19)顯示一個Deb的說明
命令行:dpkg -I filename [control-file]
20)搜索Deb包
命令行:dpkg -l package-name-pattern
示例:dpkg -I vim
21)顯示全部已經安裝的Deb包,同時顯示版本號以及簡短說明
命令行:dpkg -l
22)報告指定包的狀態信息
命令行:dpkg -s package-name
示例:dpkg -s ssh
23)顯示一個包安裝到系統裏面的文件目錄信息
命令行:dpkg -L package-Name
示例:dpkg -L apache2
24)搜索指定包裏面的文件(模糊查詢)
命令行:dpkg -S filename-search-pattern
25)顯示包的具體信息
命令行:dpkg -p package-name
示例:dpkg -p cacti
3    解析
dpkg使用解析[2]
apt-get install <package>
下載 <package> 以及全部依賴的包,同時進行包的安裝或升級.若是某個包被設置了 hold (中止標誌,就會被擱在一邊(即不會被升級).更多 hold 細節請看下面.
apt-get remove [--purge] <package>
移除 <package> 以及任何倚賴這個包裹的其它包裹.
--purge 指明這個包裹應該被徹底清除 (purged) ,更多信息請看 dpkg -P .
apt-get update
升級來自 Debian 鏡像的包裹列表,若是你想安裝當天的任何軟件,至少天天運行一次,並且每次修改了
/etc/apt/sources.list 後,必須執行.
apt-get upgrade [-u]
升級全部已經安裝的包裹爲最新可用版本.不會安裝新的或移除老的包裹.若是一個包改變了倚賴關係而須要安裝一個新的包裹,那麼它將不會被升級,而是標誌爲 hold .apt-get update 不會升級被標誌爲 hold 的包裹 (這個也就是 hold 的意思).請看下文如何手動設置包裹爲 hold .我建議同時使用 '-u' 選項,由於這樣你就能看到哪些包裹將會被升級.
apt-get dist-upgrade [-u]
和 apt-get upgrade 相似,除了 dist-upgrade 會安裝和移除包裹來知足倚賴關係.所以具備必定的危險性.
apt-cache search <pattern>
搜索知足 <pattern> 的包裹和描述.
apt-cache show <package>
顯示 <package> 的完整的描述.
apt-cache showpkg <package>
顯示 <package> 許多細節,以及和其它包裹的關係.
dselect
console-apt
aptitude
gnome-apt
APT 的幾個圖形前端(其中一些在使用前得先安裝).這裏 dselect 無疑是最強大的,也是最古老,最難駕馭.
普通 Dpkg 用法
dpkg -i <package.deb>
安裝一個 Debian 包裹文件;如你手動下載的文件.
dpkg -c <package.deb>
列出 <package.deb> 的內容.
dpkg -I <package.deb>
從 <package.deb> 中提取包信息.
dpkg -r <package>
移除一個已安裝的包.
dpkg -P <package>
徹底清除一個已安裝的包.和 remove 不一樣的是, remove 只是刪掉數據和可執行文件, purge 另外還刪除全部的配製文件.
dpkg -L <package>
列出 <package> 安裝的全部文件清單.同時請看 dpkg -c 來檢查一個 .deb 文件的內容.
dpkg -s <package>
顯示已安裝包裹的信息.同時請看 apt-cache 顯示 Debian 存檔中的包裹信息,以及 dpkg -I 來顯示從一個.deb 文件中提取的包裹信息.
dpkg-reconfigure <package>
從新配製一個已經安裝的包裹,若是它使用的是 debconf (debconf 爲包裹安裝提供了一個統一的配製界面).你可以從新配製 debconf 它自己,如你想改變它的前端或提問的優先權.例如,從新配製 debconf ,使用一個 dialog 前端,簡單運行:
dpkg-reconfigure --frontend=dialog debconf (若是你安裝時選錯了,這裏能夠改回來喲
echo "<package> hold" | dpkg --set-selections
設置 <package> 的狀態爲 hlod (命令行方式)
dpkg --get-selections "<package>"
取的 <package> 的當前狀態 (命令行方式)
支持通配符,如:
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
例如:
你們如今用的都是 gaim-0.58 + QQ-plugin,爲了防止 gaim 被升級,咱們能夠採用以下方法:
方法一:
Debian:~# echo "gaim hold" | dpkg --set-selections
而後用下面命令檢查一下:
Debian:~# dpkg --get-selections "gaim"
gaim hold
如今的狀態標誌是 hold,就不能被升級了.
若是想恢復怎麼辦呢?
Debian:~# echo "gaim install" | dpkg --set-selections
Debian:~# dpkg --get-selections "gaim"
gaim install
這時狀態標誌又被重置爲 install,能夠繼續升級了.
同志們會問,哪一個這些狀態標誌都寫在哪一個文件中呢?
在 /var/lib/dpkg/status 裏,你也能夠經過修改這個文件實現 hold.
有時你會發現有的軟件狀態標誌是 purge,不要奇怪.
如:事先已經安裝了 amsn, 而後把它卸了.
apt-get remove --purge amsn
那麼狀態標誌就從 install 變成 purge.
方法二:
在/etc/apt 下手動建一個 preferences 文件
內容:
Package: gaim
Pin: version 0.58*
保存
dpkg -S <file>
在包裹數據庫中查找 <file>,並告訴你哪一個包裹包含了這個文件.(注:查找的是事先已經安裝的包裹)
從源碼創建deb packages
apt-get source [-b] <package>
下載一個源碼的包並解開。
你必須在你的/etc/apt/sources.list文件裏寫入一條 deb-src 的記錄才能完成這項工做。
若是你輸入了一個-b參數,而且是以root的身份,deb包會被自動的建立。
apt-get build-dep <package>
自動下載並安裝經過源碼建立 <package> 時須要的包。
只有apt 0.5以上版本才支持這個功能。
如今woody和以上版本包含了這個功能。
若是你使有一箇舊版本的apt,查找依賴性最簡單的方法是查看源碼包中 debian/control 這個文件,
注意這個路徑是相對的,是包內的路徑。
普通的用法,結合 apt-get source -b,例子 (as root):
apt-get build-dep <package>
apt-get source -b <package>
會下載源碼包,創建依賴性,而後嘗試編譯源碼。
dpkg-source -x <package.dsc>
若是你手工下載了一個程序的源碼包,其中包含了幾個相似 .orig.tar.gz , .dsc ,
以及 .diff.gz 之類的文件,
那麼你就能夠對 .dsc 文件使用這個命令來 unpack 源碼包。
dpkg-buildpackage
從 Debian 源碼樹創建一個deb包。你必須在source tree的主目錄才能生效。例如:
dpkg-buildpackage -rfakeroot -uc -b
這裏 '-rfakeroot' 指定命令使用 fakeroot 程序來模仿 root 權限 (來實現全部者(ownership)目的),
'-uc' 表示 "Don't cryptographically sign the changelog", '-b' 表明只創建二進制包.
debuild
一個快速打包腳本相似 dpkg-buildpackage ,能自動的識別是否使用 fakeroot,
同時爲你運行 lintian 和 gpg
修正倚賴關係
dpkg --configure --pending
若是dpkg在apt-get install upgrade dist-uptradeing 的時候出錯退出,
嘗試使用此命令來配置已經unpack的包。
而後再用 apt-get install ,upgrade, or dist-upgrade -f ,
而後再用 apt-get install, upgrade, or dist-upgrade.
可能會重複屢次,這樣一般能夠解決大多數的依賴性問題。
(同時,若是提示因爲某種緣由須要某個特定的包裹,你能夠常識安裝或卸載這個包)
apt-get install -f
apt-get upgrade -f
apt-get dist-upgrade -f
嘗試修正上述過程當中出現依賴性關係
注意 apt-get install -f 不須要 <package> 做爲參數
apache

相關文章
相關標籤/搜索