summaryrefslogtreecommitdiff
path: root/doc/apt_preferences.5.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/apt_preferences.5.sgml')
-rw-r--r--doc/apt_preferences.5.sgml227
1 files changed, 227 insertions, 0 deletions
diff --git a/doc/apt_preferences.5.sgml b/doc/apt_preferences.5.sgml
new file mode 100644
index 000000000..fdac01d37
--- /dev/null
+++ b/doc/apt_preferences.5.sgml
@@ -0,0 +1,227 @@
+<!-- -*- mode: sgml; mode: fold -*- -->
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
+
+<!ENTITY % aptent SYSTEM "apt.ent">
+%aptent;
+
+]>
+
+<refentry>
+ &apt-docinfo;
+
+ <refmeta>
+ <refentrytitle>apt_preferences</>
+ <manvolnum>5</>
+ </refmeta>
+
+ <!-- Man page title -->
+ <refnamediv>
+ <refname>apt_preferences</>
+ <refpurpose>Preference control file for APT</>
+ </refnamediv>
+
+ <RefSect1><Title>Description</>
+ <para>
+ The APT preferences file controls various aspects of the APT system.
+ It is ment to be user editable and manipulatable from software. The file
+ consists of a number of records formed like the dpkg status file, space
+ seperated sections of text with at the start of each line tags seperated
+ by a colon. It is stored in <filename>/etc/apt/preferences</>.
+ </RefSect1>
+
+ <RefSect1><Title>Versioning</>
+ <para>
+ One purpose of the preferences file is to let the user select which version
+ of a package will be installed. This selection can be made in a number of
+ ways that fall into three categories, version, release and origin.
+ <para>
+ Selection by version can be done by exact match or prefix match. The format
+ is <literal/2.1.2/ or <literal/2.2*/ for a prefix match. Matching by prefix
+ can be used to ignore the <literal/r/ in the Debian release versioning, like
+ <literal/2.1r*/ or to ignore Debian specific revisions, <literal/1.1-*/.
+ When matching versions with a prefix the highest matching version will
+ always be picked.
+ <para>
+ Selection by release is more complicated and has three forms. The primary
+ purpose of release selections is to identify a set of packages that match
+ a specific vendor, or release (ie Debian 2.1). The first two forms are
+ shortcuts intended for quick command line use. If the first character of the
+ specification is a digit then it is considered to be a release version match,
+ otherwise a release label match. Specifications which contain equals are
+ full release data matches and are a comma seperated list of one letter keys
+ followed by an equals then by the string. Examples:
+<informalexample><programlisting>
+v=2.1*,o=Debian,c=main
+l=Debian
+a=stable
+</programlisting></informalexample>
+ <para>
+ The data for these matches are taken from the <filename/Release/ files
+ that APT downloads during an <literal/update/. The available keys are:
+ <VariableList>
+ <VarListEntry><term>a= Archive</term>
+ <ListItem><Para>
+ This is the common name we give our archives, such as <literal/stable/ or
+ <literal/unstable/. The special name <literal/now/ is used to designate
+ the set of packages that are currently installed.
+ </VarListEntry>
+
+ <VarListEntry><term>c= Component</term>
+ <ListItem><Para>
+ Referes to the sub-component of the archive, <literal/main/,
+ <literal/contrib/ etc. Component may be omitted if there are no
+ components for this archive.
+ </VarListEntry>
+
+ <VarListEntry><term>v= Version</term>
+ <ListItem><Para>
+ This is a version string with the same properties as in the Packages file.
+ It represents the release level of the archive. Typical Debian release
+ numbers look like <literal/2.1r2/ with the r designating the release of
+ 2.1. New releases are limited to security updates.
+ </VarListEntry>
+
+ <VarListEntry><term>o= Origin</term>
+ <ListItem><Para>
+ This specifies who is providing this archive. In the case of Debian the
+ string will read <literal/Debian/. Other providers may use their own
+ string.
+ </VarListEntry>
+
+ <VarListEntry><term><term>l= Label</term>
+ <ListItem><Para>
+ This carries the encompassing name of the distribution. For Debian proper
+ this field reads <literal/Debian/. For derived distributions it should
+ contain their proper name.
+ </VarListEntry>
+ </VariableList>
+ <para>
+ The final selection method is by origin. This is simply the site name
+ of the originating package files. The empty string is used for file URIs.
+ <para>
+ Version selection, particularly the latter two methods, are used in may
+ different part of APT, not just the preferences file.
+ </RefSect1>
+
+ <RefSect1><Title>Candidate Version Policy</>
+ <para>
+ Interaly APT maintains a list of all available versions for all packages.
+ If you place multiple releases or vendors in your &sources-list; file then
+ these features are available. By default APT selects the highest version
+ from all automatic sources. Some sources, such as
+ <filename>project/experimental</> are marked Not Automatic - these fall
+ to the bottom of the selection pile.
+ <para>
+ When deciding what version to use APT assigns a priority to each available
+ version of the package. It then does two things, first it selects
+ the highest priorty version that is newer than the installed version of the
+ package, then it selects the highest priority version that is older than
+ the installed version. Next, if the older versions have a priority greater
+ than 1000 they are compared with the priority of the upgrade set, the larger
+ becomes the selected result. Otherwise the downgrade versions are ignored
+ and the highest priority of the ugprade set is selected.
+ <para>
+ It is possible to think of the priorities in strata:
+ <VariableList>
+ <VarListEntry><term>1000 and up</term>
+ <ListItem><Para>
+ Downgradable priorities
+ </VarListEntry>
+
+ <VarListEntry><term>1000</term>
+ <ListItem><Para>
+ The downgrade prevention barrier
+ </VarListEntry>
+
+ <VarListEntry><term>100 to 1000</term>
+ <ListItem><Para>
+ Standard priorities. 990 is the priority set by the
+ <option/--target-release / &apt-get; option. 989 is the start for auto
+ priorities and 500 are all the default package files.
+ </VarListEntry>
+
+ <VarListEntry><term>100</term>
+ <ListItem><Para>
+ The currently installed version
+ </VarListEntry>
+
+ <VarListEntry><term>0 to 100</term>
+ <ListItem><Para>
+ Non automatic priorities. These are only used if the package
+ is not installed and there is no other version available.
+ </VarListEntry>
+
+ <VarListEntry><term>less than 0</term>
+ <ListItem><Para>
+ The version is never selected.
+ </VarListEntry>
+ </VariableList>
+ <para>
+ Giving a pin a priority greater than 1000 will allow APT to downgrade
+ in order to get to that version.
+ <para>
+ Each package may be pinned to a specific version and each Package file
+ has a priority for every package inside. The highest priority assigned
+ to a package is the one that is used.
+ <para>
+ A package pin looks like this:
+<informalexample><programlisting>
+Package: apt
+Pin: version 0.4.0
+Pin-Priority: 1001
+</programlisting></informalexample>
+ The first line specifies the package, the second gives the Pin specification
+ and the last gives the priority of this pin. The first word of the pin
+ specification may be version, release or origin, the remainder of the field
+ is described in the Versioning sectin above.
+ <para>
+ A default pin is how the priorities of package files are set. Any number
+ of default pins may be specified, the first matching default will select
+ the priority of the package file. Only release or origin may be used in
+ the Pin specification since they match Package files.
+<informalexample><programlisting>
+Package: *
+Pin: release v=2.1*
+Pin-Priority: 998
+</programlisting></informalexample>
+ <para>
+ If the Pin-Priorty field is omitted then the priority defaults to 989 for
+ both cases.
+
+ <RefSect2><title>Interesting Effects</>
+ <para>
+ Due to the downgrade prevention barrier at priority 1000 it is possible
+ that a lower priority version will be selected if the higher priority
+ would casue a downgrade. For instance, if package foo has versions
+ <literal/1.2/, <literal/1.1/ and <literal/1.0/ installed, with
+ <literal/1.1/ being the currently installed version and the priorities of
+ each version being 900, 100 and 950 repectively the winning version will be
+ <literal/1.2/.
+ <para>
+ In practice this is often desired. A user may use a default pin to
+ make the stable distribution the default and then use the
+ <option/--target-dist/ option with &apt-get; to select newer versions
+ from unstable. The packages that have been upgraded to unstable will
+ continue to follow the versions that are available in unstable since
+ the stable versions now fall below the downgrade prevention barrier.
+ <para>
+ If this is not desired then a default pin should be used to make unstable
+ have a priority less than 100.
+ <para>
+ Users of 3rd party add ons such as Helix GNOME can use this mechanism to
+ force the usage of Helix packages, or force the usage of Debian packages
+ by setting the priority of that source sufficiently high. It is even
+ possible to mass downgrade from one set of packages to another by
+ using a priority larger than 1000.
+ </RefSect2>
+ </RefSect1>
+
+ <RefSect1><Title>See Also</>
+ <para>
+ &apt-cache; &apt-conf;
+ </RefSect1>
+
+ &manbugs;
+ &manauthor;
+
+</refentry>