Package and Set Dependency Specifications
Dependency specifications can look like:
set: A simple set name. Only supported where a named set makes sense.
pkg: A simple package name. Not supported in configuration files, and only supported where Paludis can safely disambiguate this into
cat/pkg: A simple package name with explicit category. This may be followed by suffixes, as described below.
=cat/pkg-1.23: A simple package name with an explicit category, package and version. Operators other than
=are available, described below. This may be followed by suffixes.
In some places, either or both of
pkg may be
*, which matches any
category or package. This is not permitted where it would not make sense. To match any package in any category, use
=cat/pkg-1.23 forms may be followed by zero or more optional suffixes, in
the following order:
:slot: Match only in that slot.
::repo->repo: Repository requirements, described below.
::->something, for all legal values of something.
[-use]: Match only if the named USE flag is enabled / disabled for this package. May be specified multiple times with different USE flag names.
[=1.23]: Match a particular version. Any operator described below can be used. May be extended to ranged dependencies, using either
[=1.23|=1.24|=1.25]for an or dependency or
[>=1.2&<2]for an and dependency.
[.key?]: Match only if the specified metadata key exists.
keymay be a key's raw name (e.g.
DEPEND) or a role prefixed with a dollar sign (e.g.
$build_dependencies). If the key's name is prefixed with
::, metadata from the repository rather than the package ID is checked. If the key is in
(parens), matches masks by role, token or associated key (and
(*)matches any mask).
[.key=value]: Match only if the specified metadata key has a particular exact value. Only works for simple values, sets and sequences, not spec trees and other complex compound keys. If
<is used in place of
=, for numeric values a less-than comparison is used, and for sets, sequences and spec trees, a match occurs if any member of the set or sequence is equal to the value. Similarly if
>is used, for numeric values a greater-than comparison is used; it does not match for other types of values. If
!=is used for simple values, a not-equal comparison is used. As above, the key may be a raw name or a dollar-prefixed role name, and may be prefixed with
::for checking repository metadata.
[.!exclude=spec]: Exclude packages matching
spec. The main restriction on
specis that it may not include the
brackets. Following are some of the examples of valid exclude requirements:
Repository requirements are in the form
from may only be a repository name, and matches packages originally from that repository (so
*/*::myrepo-> finds installed packages that originated in
myrepo. Valid forms for
to are as follows:
repo: currently in this repository. Note that an installed package is no longer 'in' the repository whence it came; use a from specification for that.
repo?: could be installed to
repo??: could be installed to
repo, ignoring masks.
/path: installed at root
/path?: could be installed to some installed repository with root path
/path??: could be installed to some installed repository with root path
/path, ignoring masks.
The following operators are recognised:
- Exactly equal to.
- Less than or equal to.
- Strictly less than.
- Greater than or equal to.
- Strictly greater than.
- Equal to, ignoring the package revision. If a package revision is specified, in addition the package must be of greater than or equal to this revision.
- Starting with this version, componentwise. The asterisk comes after the version part (
- Greater than or equal to the version, and strictly less than the version with its one-before-least-significant
digit part incremented, and its least significant digit part discarded. For example,