STANNIX Community


Manual: dpkg-query

dpkg-query(1)						 dpkg suite					       dpkg-query(1)

NAME
       dpkg-query - a tool to query the dpkg database

SYNOPSIS
       dpkg-query [option...] command

DESCRIPTION
       dpkg-query is a tool to show information about packages listed in the dpkg database.

COMMANDS
       -l, --list [package-name-pattern...]
	   List	 all  known  packages  matching one or more patterns, regardless of their status, which includes any real or
	   virtual package referenced in any dependency relationship field (such as Breaks, Enhances, etc.).  If no package-
	   name-pattern is given, list all packages in /var/lib/dpkg/status, excluding	the  ones  marked  as  not-installed
	   (i.e.   those  which have been previously purged).  Normal shell wildcard characters are allowed in package-name-
	   pattern.  Please note you will probably have to quote package-name-pattern to prevent the shell  from  performing
	   filename expansion.	For example this will list all package names starting with “libc6”:

	    dpkg-query -l 'libc6*'

	   The first three columns of the output show the desired action, the package status, and errors, in that order.

	   Desired action:

	   u = Unknown
	   i = Install
	   h = Hold
	   r = Remove
	   p = Purge

	   Package status:

	   n = Not-installed
	   c = Config-files
	   H = Half-installed
	   U = Unpacked
	   F = Half-configured
	   W = Triggers-awaiting
	   t = Triggers-pending
	   i = Installed

	   Error flags:

	    = (none)
	   R = Reinst-required

	   An  uppercase  status  or error letter indicates the package is likely to cause severe problems.  Please refer to
	   dpkg(1) for information about the above states and flags.

	   The output format of this option is not configurable, but varies automatically to fit the terminal width.  It  is
	   intended  for  human	 readers, and is not easily machine-readable.  See -W (--show) and --showformat for a way to
	   configure the output format.

       -W, --show [package-name-pattern...]
	   Just like the --list option this will list all packages matching the given patterns.	 However the output  can  be
	   customized using the --showformat option.

	   The	default	 output format gives one line per matching package, each line consisting of the package name and its
	   installed version, separated by a tab.  The package name will be  architecture  qualified  for  packages  with  a
	   Multi-Arch field with the value same or with a foreign architecture, which is an architecture that is neither the
	   native one nor all.

       -s, --status [package-name...]
	   Report  status of specified packages.  This just displays the entry in the installed package status database.  If
	   no package-name is specified it will display all package entries in the  status  database  (since  dpkg  1.19.1).
	   When	 multiple package-name entries are listed, the requested status entries are separated by an empty line, with
	   the same order as specified on the argument list.

       -L, --listfiles package-name...
	   List files installed to your system from package-name.  When multiple package-names	are  listed,  the  requested
	   lists of files are separated by an empty line, with the same order as specified on the argument list.

	   Each	 file  diversion  is  printed  on  its	own line after its diverted file, prefixed with one of the following
	   localized strings:

	     locally diverted to: diverted-to
	     package diverts others to: diverted-to
	     diverted by pkg to: diverted-to

	   Hint: When machine parsing the output, it is customary to set the locale to C.UTF-8 to get reproducible  results.
	   On some systems this might also require adapting the LANGUAGE environment variable appropriately if it is already
	   set (see locale(7)).

	   This command will not list extra files created by maintainer scripts, nor will it list alternatives.

       --control-list package-name
	   List	 control  files	 installed to your system from package-name (since dpkg 1.16.5).  These can be used as input
	   arguments to --control-show.

       --control-show package-name control-file
	   Print the control-file installed to your system from package-name to the standard output (since dpkg 1.16.5).

       -c, --control-path package-name [control-file]
	   List paths for control files installed to your system from package-name (since dpkg 1.15.4).	 If control-file  is
	   specified then only list the path for that control file if it is present.

	   Warning: This command is deprecated as it gives direct access to the internal dpkg database, please switch to use
	   --control-list  and	--control-show	instead	 for  all cases where those commands might give the same end result.
	   Although, as long as there is still at least one case where this command is needed (i.e. when having to remove  a
	   damaging  postrm  maintainer	 script),  and	while  there is no good solution for that, this command will not get
	   removed.

       -S, --search filename-search-pattern...
	   Search for packages that own files corresponding to the given patterns.  Standard shell wildcard  characters	 can
	   be  used  in	 the pattern, where asterisk (*) and question mark (?) will match a slash, and backslash (\) will be
	   used as an escape character.

	   If the first character in the filename-search-pattern is none of ‘*[?/’ then it will be  considered	a  substring
	   match  and  will  be	 implicitly  surrounded	 by ‘*’ (as in *filename-search-pattern*).  If the subsequent string
	   contains any of ‘*[?\’, then it will handled like a glob pattern, otherwise any trailing  ‘/’  or  ‘/.’  will  be
	   removed and a literal path lookup will be performed.

	   This command will not list extra files created by maintainer scripts, nor will it list alternatives.

	   The	output	format	consists  of  one  line	 per  matching	pattern, with a list of packages owning the pathname
	   separated by a comma (U+002C ‘,’) and a space (U+0020 ‘ ’), followed	 by  a	colon  (U+003A	‘:’)  and  a  space,
	   followed by the pathname.  As in:

	     pkgname1, pkgname2: pathname1
	     pkgname3: pathname2

	   File diversions are printed with the following localized strings:

	     diversion by pkgname from: diverted-from
	     diversion by pkgname to: diverted-to

	   or for local diversions:

	     local diversion from: diverted-from
	     local diversion to: diverted-to

	   Hint: When machine parsing the output, it is customary to set the locale to C.UTF-8 to get reproducible results.

       -p, --print-avail [package-name...]
	   Display  details  about  packages, as found in /var/lib/dpkg/available.  If no package-name is specified, it will
	   display all package entries in the available database  (since  dpkg	1.19.1).   When	 multiple  package-name	 are
	   listed,  the	 requested available entries are separated by an empty line, with the same order as specified on the
	   argument list.

	   Users of APT-based frontends should use apt show package-name instead as the available file is only	kept  up-to-
	   date when using dselect.

       -?, --help
	   Show the usage message and exit.

       --version
	   Show the version and exit.

OPTIONS
       --admindir=dir
	   Change the location of the dpkg database.  The default location is /var/lib/dpkg.

       --root=directory
	   Set	the  root directory to directory, which sets the administrative directory to «directory/var/lib/dpkg» (since
	   dpkg 1.21.0).

       --load-avail
	   Also load the available file when using the --show and --list commands, which now default to	 only  querying	 the
	   status file (since dpkg 1.16.2).

       --no-pager
	   Disables the use of any pager when showing information (since dpkg 1.19.2).

       -f, --showformat=format
	   This	 option	 is  used  to specify the format of the output --show will produce (short option since dpkg 1.13.1).
	   The format is a string that will be output for each package listed.

	   In the format string, “\” introduces escapes:

	   \n newline
	   \r carriage return
	   \t tab

	   “\” before any other character suppresses any special meaning of the following character, which is useful for “\”
	   and “$”.

	   Package information can be included	by  inserting  variable	 references  to	 package  fields  using	 the  syntax
	   “${field[;width]}”.	 Fields	 are printed right-aligned unless the width is negative in which case left alignment
	   will be used.  The following fields are recognized but they are not necessarily  available  in  the	status	file
	   (only internal fields or fields stored in the binary package end up in it):

	   Architecture
	   Bugs
	   Conffiles (internal)
	   Config-Version (internal)
	   Conflicts
	   Breaks
	   Depends
	   Description
	   Description-md5 (internal, front-end related)
	   Enhances
	   Protected
	   Essential
	   Filename (internal, front-end related)
	   Homepage
	   Installed-Size
	   MD5sum (internal, front-end related)
	   Maintainer
	   Multi-Arch
	   Origin
	   Package
	   Pre-Depends
	   Priority
	   Provides
	   Recommends
	   Replaces
	   Revision (obsolete)
	   Section
	   SHA1 (internal, front-end related)
	   SHA256 (internal, front-end related)
	   SHA512 (internal, front-end related)
	   Size (internal, front-end related)
	   Source
	   Status (internal)
	   Suggests
	   Tag (usually not in .deb but in repository Packages files)
	   Triggers-Awaited (internal)
	   Triggers-Pending (internal)
	   Version

	   The	following  are virtual fields, generated by dpkg-query from values from other fields (note that these do not
	   use valid names for fields in control files):

	   binary:Package
	       It contains the binary package name with a possible architecture qualifier  like	 “libc6:amd64”	(since	dpkg
	       1.16.2).	 An architecture qualifier will be present to make the package name unambiguous, for packages with a
	       Multi-Arch field with the value same or with a foreign architecture, which is an architecture that is neither
	       the native one nor all.

	   binary:Synopsis
	       It contains the package short description (since dpkg 1.19.1).

	   binary:Summary
	       This is an alias for binary:Synopsis (since dpkg 1.16.2).

	   db:Status-Abbrev
	       It contains the abbreviated package status (as three characters), such as “ii ” or “iHR” (since dpkg 1.16.2).
	       See the --list command description for more details.

	   db:Status-Want
	       It contains the package wanted status, part of the Status field (since dpkg 1.17.11).

	   db:Status-Status
	       It contains the package status word, part of the Status field (since dpkg 1.17.11).

	   db:Status-Eflag
	       It contains the package status error flag, part of the Status field (since dpkg 1.17.11).

	   db-fsys:Files
	       It contains the list of the package filesystem entries separated by newlines (since dpkg 1.19.3).

	   db-fsys:Last-Modified
	       It  contains  the  timestamp  in seconds of the last time the package filesystem entries were modified (since
	       dpkg 1.19.3).

	   source:Package
	       It contains the source package name for this binary package (since dpkg 1.16.2).

	   source:Version
	       It contains the source package version for this binary package (since dpkg 1.16.2)

	   source:Upstream-Version
	       It contains the source package upstream version for this binary package (since dpkg 1.18.16)

	   The default format string is “${binary:Package}\t${Version}\n”.  Actually, all other fields found in	 the  status
	   file	 (i.e.	user  defined  fields) can be requested, too.  They will be printed as-is, though, no conversion nor
	   error checking is done on them.  To get the name of the dpkg maintainer and the installed version, you could run:

	    dpkg-query -f='${binary:Package} ${Version}\t${Maintainer}\n' \
	     -W dpkg

EXIT STATUS
       0   The requested query was successfully performed.

       1   The requested query failed either fully or partially,  due  to  no  file  or	 package  being	 found	(except	 for
	   --control-path, --control-list and --control-show were such errors are fatal).

       2   Fatal or unrecoverable error due to invalid command-line usage, or interactions with the system, such as accesses
	   to the database, memory allocations, etc.

ENVIRONMENT
   External environment
       SHELL
	   Sets the program to execute when spawning a command via a shell (since dpkg 1.19.2).

       PAGER
       DPKG_PAGER
	   Sets the pager command to use (since dpkg 1.19.1), which will be executed with «$SHELL -c».	If SHELL is not set,
	   «sh» will be used instead.

	   The	DPKG_PAGER overrides the PAGER environment variable (since dpkg 1.19.2).  If none of the programs pointed by
	   DPKG_PAGER or PAGER are present, the following programs will be tried in order (since dpkg 1.22.12): the  default
	   pager pager, then less(1), more(1), and finally cat(1).

       DPKG_ROOT
	   If set and the --root option has not been specified, it will be used as the filesystem root directory (since dpkg
	   1.21.0).

       DPKG_ADMINDIR
	   If set and the --admindir option has not been specified, it will be used as the dpkg data directory.

       DPKG_DEBUG
	   Sets	 the debug mask (since dpkg 1.21.10) from an octal value.  The currently accepted flags are described in the
	   dpkg --debug option, but not all these flags might have an effect on this program.

       DPKG_COLORS
	   Sets the color mode (since dpkg 1.18.5).  The currently accepted values are: auto (default), always and never.

       DPKG_NLS
	   If set, it will be used to decide whether to activate Native Language Support, also known as internationalization
	   (or i18n) support (since dpkg 1.22.7).  The accepted values are: 0 and 1 (default).

   Internal environment
       LESS
	   Defined by dpkg-query to “-FRSXMQ”, if not already set, when spawning a pager (since dpkg 1.19.2).  To change the
	   default behavior, this variable can be preset to some other value including an empty	 string,  or  the  PAGER  or
	   DPKG_PAGER variables can be set to disable specific options with «-+», for example DPKG_PAGER="less -+F".

SECURITY
       Query  operations  should never require root, and delegating their execution to unprivileged users via some gain-root
       command can have security implications (such as privilege escalation), for example  when	 a  pager  is  automatically
       invoked by the tool.

SEE ALSO
       dpkg(1).

1.23.7							 2026-03-31					       dpkg-query(1)