---
name: "pkg_info"
section: "1"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["openbsd"]
url: "https://new.carta.tech/pkg_info"
---

# pkg\_info(1)

display information on software packages

## NAME

**pkg\_info** – display information on software packages

## SYNOPSIS

**pkg\_info** \[**-AaCcdfIKLMmPqRSstUvz**\] \[**-D** *name*\[=*value*\]\] \[**-E** *filename*\] \[**-e** *pkg-name*\] \[**-l** *str*\] \[**-Q** *substring*\] \[**-r** *pkgspec*\] \[*pkg-name* *...*\]

## DESCRIPTION

The **pkg\_info** command is used to dump out information for packages, as created by [pkg\_create(1)](/pkg_create/1.md), which may be still packed up or already installed on the system with the pkg\_add(1) command.

The *pkg-name* may be the name of an installed package, the pathname to a package distribution file, or a URL to a package available through FTP, HTTP, HTTPS, or SCP. **pkg\_info** will try to complete *pkg-name* with a version number while looking through installed packages. If no *pkg-name* is specified, **pkg\_info** shows the names and one-line comments for all installed packages except internal packages.

When browsing through uninstalled packages, running **pkg\_info** **-I** **\*.tgz** will report a summary line for each package, so that it is possible to run **pkg\_info** **pkgname.tgz** to obtain a longer package description, and **pkg\_add** **-n** **pkgname.tgz** to check that the installation would proceed cleanly, including dependencies.

The following command-line options are supported:

- **-A**

  Show the names and one-line comments for all installed packages, including internal packages. This option cannot be combined with *pkg-name* arguments.

- **-a**

  Show the names and one-line comments for all installed packages except internal packages. This option cannot be combined with *pkg-name* arguments. It is the default when neither options nor arguments are given.

- **-C**

  Show certificate information for signed packages.

- **-c**

  Show the one-line comment field for each package.

- **-D** *name*\[=*value*\]

  Enforce extra options as given by *name*, similarly to pkg\_add(1).

  - **SIGNER**

    List of trusted signers, separated by commas. Corresponds to list of public keys under */etc/signify* we want to trust. Defaults to any key matching ‘\*pkg’ for packages, and any key matching ‘\*fw’ for firmware.

  - **snap**

    Force ‘%c’ and ‘%m’ to expand to ‘snapshots’, even on a release kernel.

  - **unsigned**

    Allow opening unsigned packages without warnings/errors (necessary for [ports(7)](/ports/7.md), automatically set by the build infrastructure).

- **-d**

  Show the long-description field for each package.

- **-E** *filename*

  Look for the package(s) that contains the given *filename*. As a faster alternative, note that there is a package, pkglocatedb, that contains a [locate(1)](/locate/1.md) database of every file in every package.

- **-e** *pkg-name*

  This option allows you to test for the presence of another (perhaps prerequisite) package from a script. If the package identified by *pkg-name* is currently installed, return 0, otherwise return 1. In addition, the names of any package(s) found installed are printed to stdout unless turned off using the **-q** option.

  The given *pkg-name* is actually a package specification, as described in [packages-specs(7)](/packages-specs/7.md). For example, **pkg\_info** **-e** **'name-\>=1.3'** will match versions 1.3 and later of the *name* package.

- **-e** *pkgpath*

  Another variant of this option that uses a pkgpath instead. A pkgpath is a location within the ports tree, as described in [pkgpath(7)](/pkgpath/7.md). For example, **pkg\_info** **-e** **x11/kde/base3** will match any package that was compiled according to *${PORTSDIR}/x11/kde/base3*.

- **-f**

  Show the packing-list instructions for each package. See [pkg\_create(1)](/pkg_create/1.md) and [package(5)](/package/5.md) for the various annotations.

- **-I**

  Show the name and one-line comment (“index entry”) for each package. This is done by default if neither options nor arguments are given.

- **-K**

  Prefix file names with category keyword (e.g., @file, @lib). Always used together with **-L**.

- **-L**

  Show the files within each package. This is different from just viewing the packing-list, since full pathnames for everything are generated.

- **-l** *str*

  Prefix each information category header (see **-q**) shown with *str*. This is primarily of use to front-end programs that want to request a lot of different information fields at once for a package, but don't necessarily want the output intermingled in such a way that they can't organize it. This lets you add a special token to the start of each field.

- **-M**

  Show the install-message file (if any) for each package.

- **-m**

  Show the names and one-line comments for all packages tagged as manually installed, omitting those automatically installed as dependencies. This option cannot be combined with *pkg-name* arguments.

- **-P**

  Show the [pkgpath(7)](/pkgpath/7.md) for each package. You can easily build a subdirlist with this.

- **-Q** *substring*

  Show the names of all packages in the first repository of the package search path containing the *substring* in the stems of their package names. A stem is a package name with all version and flavor suffixes removed; see pkg\_add(1) for more details on stems. If **-a** is also specified, show the names of all matching packages in all repositories instead.

- **-q**

  Be “quiet” in emitting report headers and such, just dump the raw info (basically, assume a non-human reading).

- **-R**

  Show which packages require a given package.

- **-r** *pkgspec*

  Check a list for a given *pkgspec*. The following arguments are names of packages to verify. Exit status will be augmented by 2 if none of the packages do match.

- **-S**

  Show the update signature for each package. The ‘update signature’ is a unique tag showing the package name, a global version number, and the version number of every run time dependency and shared library used to build this package.

- **-s**

  Show an estimate of the total size of each package.

- **-t**

  Show the names and one-line comments for packages which are not required by any other packages. This option cannot be combined with *pkg-name* arguments.

- **-U**

  Show the deinstall-message file (if any) for each package.

- **-v**

  Turn on verbose output.

- **-z**

  Fuzzy listing option, often used together with **-m**. Only shows stems, flavors and branches information. To be reused with pkg\_add(1) **-l** to recreate a package installation with different versions and no ambiguity. Note that this intentionally does not include firmware, as they are not handled by pkg\_add(1).

## ENVIRONMENT

- PKG\_DBDIR

  The standard package database directory, */var/db/pkg*, can be overridden by specifying an alternative directory in the PKG\_DBDIR environment variable.

- PKG\_PATH

  This can be used to specify a colon-separated list of paths to search for package files. The current directory is always searched first, even if PKG\_PATH is set. If PKG\_PATH is used, the suffix “.tgz” is automatically appended to the *pkg-name*, whereas searching in the current directory uses *pkg-name* literally. Each entry consists of a directory name. URL schemes such as FTP, HTTP, HTTPS, or SCP are also appropriate. The current directory may be indicated implicitly by an empty directory name, or explicitly by a single period (‘./’). Special sequences ‘%a’, ‘%c’, ‘%m’, ‘%v’ will be expanded.

- PKG\_TMPDIR

  Temporary area where package information files will be extracted, instead of */tmp*.

- TRUSTED\_PKG\_PATH

  Same semantics as PKG\_PATH, but it is searched before PKG\_PATH and waives any kind of signature checking.

## FILES

- */usr/local/share/doc/pkg-readmes/*

  OpenBSD-specific information about individual packages

- */var/db/pkg/*

  database of installed [packages(7)](/packages/7.md)

## TECHNICAL DETAILS

Package info is either extracted from package files named on the command line, or from already installed package information in */var/db/pkg/\<pkg-name\>*.

## SEE ALSO

pkg\_add(1), [pkg\_create(1)](/pkg_create/1.md), [pkg\_delete(1)](/pkg_delete/1.md), [bsd.port.mk(5)](/bsd.port.mk/5.md), [package(5)](/package/5.md), [packages-specs(7)](/packages-specs/7.md), [pkgpath(7)](/pkgpath/7.md)

## AUTHORS

- Jordan Hubbard

  initial design

- Marc Espie

  complete rewrite
