dpkg 是 Debian/Ubuntu 系統的底層套件管理工具,直接操作 .deb 檔案。雖不自動解決相依性(需搭配 apt),但對單一檔案安裝、查詢套件內容、檢視安裝檔案清單極為實用。
| 指令 | 等價長參數 | 功能 | 範例 |
|---|---|---|---|
dpkg -I | --info | 顯示 .deb 套件詳細資訊(名稱、版本、架構、相依) | dpkg -I linuxidc.deb |
dpkg -c | --contents | 列出 .deb 內含檔案結構 | dpkg -c linuxidc.deb |
dpkg -i | --install | 安裝 .deb 套件 | sudo dpkg -i linuxidc.deb |
dpkg -l | --list | 查詢已安裝套件資訊(支援萬用字元) | dpkg -l linuxidc |
dpkg -L | --listfiles | 列出已安裝套件的所有檔案路徑 | dpkg -L linuxidc |
dpkg -s | --status | 顯示已安裝套件詳細狀態 | dpkg -s linuxidc |
dpkg -r | --remove | 移除套件(保留設定檔) | sudo dpkg -r linuxidc |
dpkg -P | --purge | 徹底移除套件含設定檔 | sudo dpkg -P linuxidc |
dpkg --configure -a | 修復未完成配置的套件 | sudo dpkg --configure -a |
# 1. 檢視套件資訊
dpkg -I google-chrome-stable_current_amd64.deb
# 2. 安裝(若缺相依會報錯)
sudo dpkg -i google-chrome-stable_current_amd64.deb
# 3. 補裝相依
sudo apt-get install -f
# 列出 nginx 安裝的所有檔案
dpkg -L nginx | head -20
# 找尋特定檔案屬於哪個套件
dpkg -S /etc/nginx/nginx.conf
# 列出狀態非 install 的套件
dpkg -l | grep -v ^ii
# 強制重新配置
sudo dpkg --configure -a
sudo apt-get install -f
sudo apt-get install -f 讓 apt 修復。
| 操作 | dpkg (底層) | apt/apt-get (高層) |
|---|---|---|
| 安裝本地 .deb | dpkg -i pkg.deb | apt install ./pkg.deb (自動解決相依) |
| 安裝倉庫套件 | 不支援 | apt install pkg |
| 查詢已安裝 | dpkg -l pkg | apt list --installed pkg |
| 列出檔案 | dpkg -L pkg | dpkg -L pkg (同) |
| 移除套件 | dpkg -r pkg | apt remove pkg |
dpkg-deb -x pkg.deb /target/dir(僅解壓檔案)、dpkg-deb -e pkg.deb /target/DEBIAN(解壓控制資訊)。dpkg-deb -b /source/dir pkg_new.deb 重新打包。echo "pkg hold" | dpkg --set-selections,解鎖用 install 替換 hold。dpkg 是套件管理的基石,理解其操作能處理 apt 無法解決的邊緣情況(離線安裝、檔案追蹤、套件修復),是 Linux 系統管理的核心技能。