简介
本文介绍Linux的dpkg命令的用法。
dpkg 是Debian package的简写,为”Debian“ 操作系统 专门开发的套件管理系统,用于软件的安装,更新和移除。
所有源自"Debian"的Linux的发行版都使用 dpkg, 例如:Ubuntu、Knoppix 等。deb包扩展名为.deb。
dpkg和apt的区别
- dpkg 仅用于安装本地的软件包,安装时不会安装依赖包,不解决依赖问题。
- apt 默认会从远程仓库搜索包的名字,下载并安装,安装时会自动安装依赖包,并解决依赖问题。 如果需要使用apt 从本地安装,需要在包名前指定路径,否则只从远程仓库查找。
参数
-i:安装软件包;
-r:删除软件包;
-P:删除软件包的同时删除其配置文件;
-L:显示于软件包关联的文件;
-l:显示已安装软件包列表;
--unpack:解开软件包;
-c:显示软件包内文件列表;
--confiugre:配置软件包。
示例
dpkg -i package.deb #安装包
dpkg -r package #删除包
dpkg -P package #删除包(包括配置文件)
dpkg -L package #列出与该包关联的文件
dpkg -l package #显示该包的版本
dpkg --unpack package.deb #解开deb包的内容
dpkg -S keyword #搜索所属的包内容
dpkg -l #列出当前已安装的包
dpkg -c package.deb #列出deb包的内容
dpkg --configure package #配置包
dpkg -l
可以使用 dpkg -l 命令列出当前系统中已经安装的软件以及软件包的状态。如:
xxx@yyy:/work/tmp/key$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==========================================-===================================-============-========================================================================>
ii accountsservice 0.6.55-0ubuntu12~20.04.6 amd64 query and manipulate user account information
ii acl 2.2.53-6 amd64 access control list - utilities
ii acpi-support 0.143 amd64 scripts for handling many ACPI events
ii acpid 1:2.0.32-1ubuntu1 amd64 Advanced Configuration and Power Interface event daemon
ii adduser 3.118ubuntu2 all add and remove users and groups
ii adwaita-icon-theme 3.36.1-2ubuntu0.20.04.2 all default icon theme of GNOME (small subset)
ii alsa-base 1.0.25+dfsg-0ubuntu5 all ALSA driver configuration files
ii alsa-topology-conf 1.2.2-1 all ALSA topology configuration files
ii alsa-ucm-conf 1.2.2-1ubuntu0.1 all ALSA Use Case Manager configuration files
ii alsa-utils 1.2.2-1ubuntu1 amd64 Utilities for configuring and using ALSA
ii amd64-microcode 3.20191218.1ubuntu1.2 amd64 Processor microcode firmware for AMD CPUs
ii anacron 2.3-29 amd64 cron-like program that doesn't go by time
ii apg 2.2.3.dfsg.1-5 amd64 Automated Password Generator - Standalone version
ii app-install-data-partner 19.04 all Application Installer (data files for partner applications/repositories)
ii apparmor 2.13.3-7ubuntu5.1 amd64 user-space parser utility for AppArmor
ii apport 2.20.11-0ubuntu27.26 all automatically generate crash reports for debugging
ii apport-gtk 2.20.11-0ubuntu27.26 all GTK+ frontend for the apport crash report system
ii apport-symptoms 0.23 all symptom scripts for apport
ii appstream 0.12.10-2 amd64 Software component metadata management
ii apt 2.0.2ubuntu0.2 amd64 commandline package manager
该命令每行输出中的第一列 ii 表示软件包的安装和配置状态,其格式如下:
期望状态|当前状态|错误
其中期望状态有以下几种
u:即 unknown,软件包未安装且用户未请求安装
i:即 install,用户请求安装该软件包
r:即 remove,用户请求卸载该软件包
p:即 purge,用户请求卸载该软件包并清理配置文件
h:即 hold,用户请求保持续当前软件包版本
当前状态 有以下几种:
n:即 not-installed,软件包未安装
i:即 installed,软件包已安装并完成配置
c:即 config-files,软件包已经被卸载,但是其配置文件未清理
u:即 unpacked,软件包已经被解压缩,但还未配置
f:即 half-configured,配置软件包时出现错误
w:即 triggers-awaited,触发器等待
t:即 triggers-pending,触发器未决
错误状态 有以下几种:
h:软件包被强制保持
r:即 reinstall-required,需要卸载并重新安装
x:软件包被破坏
因此:
- ii 表示该软件需要安装且已经安装,没有出现错误;
- iu 表示已经安装该软件,但未正确配置;
- rc 表示该软件已经被删除,但配置文件未清理。