内容纲要

命令概述

dpkg-query命令是Debian linux中软件包的查询工具,它从dpkg软件包数据库中查询并显示软件包的信息。

查询软件包时,软件包的名称支持通配符,如tree*将查询所有以tree开头的软件包。

命令格式

用法:dpkg-query [<选项> …] <命令>

常用选项

命令:
  -s|--status <软件包> ...         显示软件包详尽的状态信息。
  -p|--print-avail <软件包> ...    显示当前可供安装的版本的详细信息。
  -L|--listfiles <软件包> ...      列出所有属于这个(些)软件包的文件。
  -l|--list [<表达式> ...]         简要地列出软件包。
  -W|--show <表达式> ...           显示软件包的相关信息。
  -S|--search <表达式> ...         搜寻拥有该文件(或多个文件)的软件包。
 --control-list <软件包>       打印软件包控制文件列表。
 --control-show <软件包> <文件>
                               显示软件包控制文件。
  -c|--control-path <软件包> [<文件>]
                               显示软件包控制文件的路径。

  -?, --help                       显示本帮助信息。
      --version                    显示版本信息。

选项:
  --admindir=<目录>                使用 <目录> 而非 /var/lib/dpkg。
  --load-avail                     在 --show 和 --list 之后使用有效文件。
  -f|--showformat=<格式串>         令 --show 使用其它的格式输出。

格式串的语法:
  格式串是用于显示每一个软件包的字符串。格式串可以包含标准的
  脱字符(escape sequences),如 \n (换行)、\r (回车)、或是 \\ (反斜杠)。
  还可以通过加入软件包属性的变量引用来反映软件包的相关信息,
  要在某些字段引用属性变量的话,可以用这样的语法:${var[;width]}。
  字段一般是靠右对齐的,除非它的宽度是负数。若其宽度是负数,
  那么字段将会靠左对齐。

参考示例

1、列出软件包简要信息

root@Ubuntu20.04:~# dpkg-query -l sysstat
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  sysstat        12.2.0-2     amd64        system performance tools for Linux

2、显示已安装包详尽状态信息

root@Ubuntu20.04:~# dpkg-query -s sysstat
Package: sysstat
Status: install ok installed
Priority: optional
Section: admin
Installed-Size: 1488
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Version: 12.2.0-2
Depends: lsb-base (>= 3.0-6), ucf (>= 2.003), xz-utils, debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.14), libsensors5 (>= 1:3.5.0)
Recommends: cron | cron-daemon
Suggests: isag
Conffiles:
 /etc/cron.d/sysstat 455c3c071b6daabb4e4490828975034c
 /etc/cron.daily/sysstat 19b1317e195208eed1a0bcd68be2e637
 /etc/init.d/sysstat 222cea8f69c5baad2e2e2189a913eed8
 /etc/sysstat/sysstat ca9b91d6a6738aa6f48a7d2b2b8ee774
 /etc/sysstat/sysstat.ioconf 1699371117f9393aebb9523c4cbadca8
Description: system performance tools for Linux
 The sysstat package contains the following system performance tools:
  - sar: collects and reports system activity information;
  - iostat: reports CPU utilization and disk I/O statistics;
  - tapestat: reports statistics for tapes connected to the system;
  - mpstat: reports global and per-processor statistics;
  - pidstat: reports statistics for Linux tasks (processes);
  - sadf: displays data collected by sar in various formats;
  - cifsiostat: reports I/O statistics for CIFS filesystems.
 .
 The statistics reported by sar deal with I/O transfer rates,
 paging activity, process-related activities, interrupts,
 network activity, memory and swap space utilization, CPU
 utilization, kernel activities and TTY statistics, among
 others. Both UP and SMP machines are fully supported.
Original-Maintainer: Robert Luberda <robert@debian.org>
Homepage: http://pagesperso-orange.fr/sebastien.godard/

3、查看软件包安装时安装到系统的文件列表

root@Ubuntu20.04:~# dpkg-query -L sysstat
/.
/etc
/etc/cron.d
/etc/cron.d/sysstat
/etc/cron.daily
/etc/cron.daily/sysstat
/etc/init.d
/etc/init.d/sysstat
/etc/sysstat
/etc/sysstat/sysstat
/etc/sysstat/sysstat.ioconf
/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/sysstat.service
/usr
/usr/bin
/usr/bin/cifsiostat
/usr/bin/iostat
/usr/bin/mpstat
/usr/bin/pidstat
/usr/bin/sadf
/usr/bin/sar.sysstat
/usr/bin/tapestat
/usr/lib
/usr/lib/sysstat
.......略

4、列出ubuntu下所安装软件列表

root@Ubuntu20.04:~# dpkg-query -W --showformat='${Package} ${Version}\n'
accountsservice 0.6.55-0ubuntu12~20.04.4
acl 2.2.53-6
adduser 3.118ubuntu2
adwaita-icon-theme 3.36.1-2ubuntu0.20.04.2
........略

5、 列出所有安装的包

root@Ubuntu20.04:~# dpkg-query -l |grep gcc

6、查看软件包的确切状态(是否安装)以及版本号

root@Ubuntu20.04:~# dpkg-query -W -f='${Status} ${Version}\n' tree
install ok installed 1.8.0-1

7、查看某个文件属于哪个软件包所有

root@Ubuntu20.04:~# dpkg-query -S /usr/bin/iostat 
sysstat: /usr/bin/iostat