To improve the quality of the dependency solutions that you receive, you can provide hints to the interactive dependency resolver. These hints can alter the priorities of the resolver, biasing it more strongly in favor of one version or package, or they can be used to “pre-load” the resolver with rejections and approvals, as if you had entered the resolver and manually rejected or approved various versions.
Hints are stored in the apt
configuration file,
/etc/apt/apt.conf
, in the
configuration group “Aptitude::ProblemResolver::Hints
”
(see the section called “Configuration file reference” for details on the
configuration file).
Each resolver hint consists of an
action
, a
target
, and an optional
version
. A hint is written
like this: "
.
To apply a resolver hint, aptitude locates one or more
packages using the value of
action
target
[version
]"target
, chooses one or more
versions of those packages using the value of
version
, and finally performs
the given action
.
The action
field of a resolver
hint may be one of the following:
“approve
”: Approve the
version, as if the command a)
had been invoked on it.
→ (
“reject
”: Reject the
version, as if the command r)
had been invoked on it.
→ (
“discard
”: Discard
every solution containing the version. Differs from
“reject
” in that it is
not visible to the user and cannot be modified
interactively.
“increase-safety-cost-to
”:
increase the safety cost of any solution that contains
the version to number
number
; if
its safety cost is already higher than
number
, this hint has no
effect. The safety cost can be used (and is used by
default) to control the order in which solutions
appear; see the section called “Costs and cost components”
and the section called “Safety costs”
for details.
Several special cost levels can be chosen by name:
conflict
,
discard
: instead of changing
the safety cost, discard solutions containing
the version as if the “discard
”
hint had been applied.
maximum
: the highest safety
cost.
minimum
: the lowest safety
cost. All searches start at this cost, so
“increasing” a version to this cost
has no effect. However, this value can also be
used when adjusting the predefined cost levels:
for instance, setting Aptitude::ProblemResolver::Remove-Level
to “minimum
”
will cause removed packages to have no effect on
the safety cost of a solution.
Note | |
---|---|
The |
“number
”: add
the given number
to the
version's score
, biasing
the resolver in favor of it or (with a negative
number) away from it. For instance, the hint
200 emacs
adds 200 to the score of
emacs
, whereas the hint
-10 emacs
subtracts 10 from its
score.
If target
field of a resolver
hint contains a question mark
(“?
”) or tilde
(“~
”), it is considered to
be a search pattern and all matching package versions are
considered. Otherwise, it is considered to be the name of
a package to select. So the target
“g++
” will select only the
g++
package, but the target
“?section(non-free)
” will
select any package in the non-free
section. See the section called “Search patterns” for more
information on search patterns.
If the version
field is not
present, then all versions of the package are affected by
the hint. Otherwise, it may have any of the following
forms:
“/
”:
the hint only affects versions that are available in
the given archive
archive
.
“<
”:
the hint only affects versions whose version number is
less than version
version
.
“<=
”:
the hint only affects versions whose version number is
less than or equal to
version
version
.
“=
”:
the hint only affects versions whose version number is
version
version
.
“<>
”:
the hint only affects versions whose version number is
not version
version
.
“>=
”:
the hint only affects versions whose version number is
greater than or equal to
version
version
.
“>
”:
the hint only affects versions whose version number is
greater than version
version
.
“:UNINST
”: instead of
affecting any of the versions of
target
, the hint affects
the decision to remove
target
. For instance,
“Aptitude::ProblemResolver::Hints {
"reject aptitude :UNINST"; };
” will
prevent the resolver from attempting to remove
aptitude.
“version
”: the
hint only affects versions whose version number is
version
.