Search Patterns

When you search for a package or set a display limit in aptitude, the string you enter is known as a “search pattern”. While the most basic usage of search patterns is to match packages by name, aptitude allows you to create much more complex searches.

A search pattern consists of one or more conditions (sometimes known as “terms”); packages match the pattern if they match all of its terms. Terms generally start with a tilde character (“~”), followed by a character identifying the type of term, and then any additional text required by the term.

Most textual searches (for package names, descriptions, etc) are performed using case-insensitive regular expressions. This means that you must backslash-escape regular expression metacharacters [10] in searches (for instance, to find “g++”, you should use the pattern “g\+\+”).

The following types of terms are available:

name

Matches packages whose names match the regular expression name. This is the “default” search mode and is used for patterns that don't start with ~.

[Note]Note

To match packages whose names contain several different substrings, use the ~n matcher (described below); for instance, “~napti~ntude”.

!term

Matches packages which do not match the term term. For instance, “!~b” selects packages that are not “broken”.

[Note]Note

To include a “!” in a regular expression, it must be “escaped” to prevent aptitude from considering it part of a NOT term: “~!”.

term1 | term2

Matches packages that match either term1 or term2.

[Note]Note

To use the character “|” in a regular expression, it must be “escaped” to prevent aptitude from creating an OR term from it: “~|”.

(term)

Matches term; this is useful to explicitly select the grouping of complex expressions. For instance, “~D(perl|python)” matches any package that depends on a package whose name contains either perl or python.

~Aarchive

Matches packages which are available from an archive that matches the regular expression archive. For instance, “~Atesting” matches any package available from the testing archive.

~aaction

Matches packages on which the given action is going to be performed. action can be “install”, “upgrade”, “remove”, “purge”, “hold” (tests whether a package has been placed on hold), or “keep” (tests whether a package will be unchanged).

~Btype

Matches packages which have an unfulfilled (“broken”) dependency of the given type. type can be “depends”, “predepends”, “recommends”, “suggests”, “conflicts”, or “replaces”.

~b

Matches packages that are “broken”: they have an unfulfilled dependency, predependency, or conflict.

~Cterm

Matches packages which conflict with a package matching the given term. For instance, “~C~mdburrows@debian.org” matches any package which conflicts with a package I maintain.

~c

Matches packages which have been removed, but whose configuration files remain on the system (ie, they were removed but not purged).

~D[type:]term

type may be either “provides” or one of the dependency types given in the documentation of ~B.  If type is not present, it defaults to depends.

If type is “provides”, matches packages that provide a package matching term (the equivalent of ~P). Otherwise, matches packages which declare a dependency of type type upon a package which matches term.

~ddescription

Matches packages whose description matches the regular expression description.

~E

Matches Essential packages.

~F

This term does not match any package (“F” stands for “false”). [11]

~g

Matches packages which are not installed, or which were automatically installed and are not depended upon by any installed package.

~i

Matches packages which are currently installed.

~M

Matches packages which were automatically installed.

~mmaintainer

Matches packages whose Maintainer field matches the regular expression maintainer. For instance, “~mjoeyh” will find all packages maintained by Joey Hess.

~N

Matches packages which are “new”.

~nname

Matches packages whose name matches the regular expression name. For instance, most of the packages that match “~n^lib” are libraries of one sort or another.

~Oorigin

Matches packages whose origin matches the regular expression origin. For instance, “!~Odebian” will find any unofficial packages on your system (packages not from the Debian archive).

~Pterm

Matches packages which provide a package that matches the name. For instance, “~Pmail-transport-agent” will match all the packages that provide “mail-transport-agent”.

~ppriority

Matches packages whose priority is priority; priority must be extra, important, optional, required, or standard. For instance, “~prequired” matches packages whose priority is “required”.

~R[type:]term

type may be either “provides” or one of the dependency types given in the documentation of ~B.  If type is not present, it defaults to depends.

If type is “provides”, matches packages whose name is provided by a package matching term. Otherwise, matches packages which a package matching term declares a dependency of type type upon.

~ssection

Matches packages whose section matches the regular expression section.

~T

This term matches any package. For instance, “~i~P~T” matches installed packages which are provided by any package.

~U

This term matches any installed package which can be upgraded.

~Vversion

Matches any package whose version matches the regular expression version. For instance, “~Vdebian” matches packages whose version contains “debian”.

[Note]Note

If several versions of the package are available, which version is considered depends on context; however, it is usually either the current version or the candidate version.

~v

Matches any package which is purely virtual: that is, its name is provided by a package or mentioned in a dependency, but no package of that name exists. For instance, “~v!~P~T” matches packages which are virtual and are not provided by any package: ie, packages which are depended upon but do not exist.



[10] Regular expression metacharacters include: “+”, “-”, “.”, “(”, “)”, “|”, “[”, “]”, “^”, “$”, and “?”. Note that some of these are also aptitude metacharacters, so if you want to type (for instance) a literal “|”, it must be double-escaped: “\~|”.

[11] This is provided largely for symmetry with ~T.