dpkg — Debian 套件管理底層工具

Debian 底層套件管理,用於安裝 .deb 檔案與查詢已安裝套件。

語法

dpkg [選項] 動作

常用選項

選項 說明 範例
-i, --install 安裝 .deb 套件檔案 sudo dpkg -i package.deb
-r, --remove 移除套件(保留設定檔) sudo dpkg -r nginx
-P, --purge 完整移除套件及設定檔 sudo dpkg -P nginx
-l [樣式] 列出所有已安裝的套件(可加篩選樣式) dpkg -l "nginx*"
-L 套件名 列出套件安裝的所有檔案 dpkg -L nginx
-S 檔案路徑 查詢某個檔案屬於哪個套件 dpkg -S /usr/bin/grep
-s 套件名 顯示套件的詳細狀態資訊 dpkg -s nginx
--get-selections 列出所有套件及其安裝狀態 dpkg --get-selections
--configure -a 修復設定失敗的套件 sudo dpkg --configure -a

使用範例

範例 1:安裝 .deb 套件

安裝從廠商網站下載的 .deb 套件(若有依賴問題,再執行 sudo apt -f install)。

$ sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt -f install  # 修復依賴
Selecting previously unselected package google-chrome-stable.
Setting up google-chrome-stable (124.0.6367.78-1) ...
範例 2:查詢哪個套件提供了某個指令

找出 /usr/bin/grep 是由哪個套件安裝的。

$ dpkg -S /usr/bin/grep
grep: /usr/bin/grep
範例 3:列出套件安裝的所有檔案

查看 curl 套件安裝了哪些檔案到系統中。

$ dpkg -L curl
/usr/bin/curl
/usr/share/doc/curl
/usr/share/man/man1/curl.1.gz
範例 4:確認套件是否已安裝

查看套件的安裝狀態(ii=已安裝,un=未安裝)。

$ dpkg -l nginx
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst
+++-===================-==============-============================
ii  nginx              1.18.0-6ubun2  amd64      small, powerful, scalable web/proxy server

常見錯誤與排錯

dpkg: dependency problems prevent configuration of package
原因
安裝的 .deb 需要的依賴套件未安裝。
解法
執行 sudo apt -f install 自動解決依賴問題。

延伸閱讀