歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> dpkg包管理器詳解

dpkg包管理器詳解

日期:2017/2/28 13:45:57   编辑:Linux教程

使用Debian或Ubuntu的linux用戶肯定都用過或聽過dpkg命令。“dpkg ”是“Debian Packager ”的簡寫。為 “Debian” 專門開發的套件管理系統,方便軟件的安裝、更新及移除。所有源自“Debian”的“Linux ”發行版都使用 “dpkg”。

我的問題
先說先我使用時的疑問。在使用dpkg -l列出軟件列表後,

看到前面有列出ii或者rc,而且有的軟件安裝了不同的版本,感覺很奇怪。而且像wine,我在安裝1.7時已經卸載了1.6,可是軟件列表中還能看見。
通過查詢,原來,

ii 表示軟件正常安裝
rc表示軟件已卸載,可是配置文件還在。
知道原因,那麼應該只要查出配置文件就可以了,一個一個查找刪除非常的麻煩,好在dpkg給我們提供了一個簡單的方法,可以通過以下命令進行清理。
dpkg -l | grep ^rc | cut -d' ' -f3 | sudo xargs dpkg --purge

補充
後來看到更為詳細的講解。

每條記錄對應一個軟件包, 注意每條記錄的第一, 二, 三個字符. 這就是軟件包的狀態標識, 後邊依此是軟件包名稱, 版本號, 和簡單描述.
* 第一字符為期望值,它包括:
u 狀態未知,這意味著軟件包未安裝,並且用戶也未發出安裝請求.
i 用戶請求安裝軟件包.
r 用戶請求卸載軟件包.
p 用戶請求清除軟件包.
h 用戶請求保持軟件包版本鎖定.
* 第二列,是軟件包的當前狀態.此列包括軟件包的六種狀態.
n 軟件包未安裝.
i 軟件包安裝並完成配置.
c 軟件包以前安裝過,現在刪除了,但是它的配置文件還留在系統中.
u 軟件包被解包,但還未配置.
f 試圖配置軟件包,但是失敗了.
h 軟件包安裝,但是但是沒有成功.
* 第三列標識錯誤狀態,可以總結為四種狀態. 第一種狀態標識沒有問題,為空. 其它三種符號則標識相應問題.
h 軟件包被強制保持,因為有其它軟件包依賴需求,無法升級.
r 軟件包被破壞,可能需要重新安裝才能正常使用(包括刪除).
x 軟包件被破壞,並且被強制保持.

dpkg的用法
問題解決了,下面記錄下dpkg的常見用法。

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
7)合並軟件包信息
dpkg –merge-avail
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

Copyright © Linux教程網 All Rights Reserved