首頁 > 軟體

dpkg包管理器詳解

2020-06-16 17:26:09

使用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

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-12/138344.htm


IT145.com E-mail:sddin#qq.com