|
@@ -8,221 +8,541 @@
|
|
|
|
|
|
|
|
<refentry>
|
|
<refentry>
|
|
|
&apt-docinfo;
|
|
&apt-docinfo;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
<refmeta>
|
|
<refmeta>
|
|
|
<refentrytitle>apt_preferences</>
|
|
<refentrytitle>apt_preferences</>
|
|
|
<manvolnum>5</>
|
|
<manvolnum>5</>
|
|
|
</refmeta>
|
|
</refmeta>
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
<!-- Man page title -->
|
|
<!-- Man page title -->
|
|
|
<refnamediv>
|
|
<refnamediv>
|
|
|
<refname>apt_preferences</>
|
|
<refname>apt_preferences</>
|
|
|
<refpurpose>Preference control file for APT</>
|
|
<refpurpose>Preference control file for APT</>
|
|
|
</refnamediv>
|
|
</refnamediv>
|
|
|
-
|
|
|
|
|
- <RefSect1><Title>Description</>
|
|
|
|
|
- <para>
|
|
|
|
|
- The APT preferences file controls various aspects of the APT system.
|
|
|
|
|
- It is meant 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 and other important
|
|
|
|
|
- changes.
|
|
|
|
|
- </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 many
|
|
|
|
|
- different parts of APT, not just the preferences file.
|
|
|
|
|
- </RefSect1>
|
|
|
|
|
-
|
|
|
|
|
- <RefSect1><Title>Candidate Version Policy</>
|
|
|
|
|
- <para>
|
|
|
|
|
- Internally 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>above 1000</term>
|
|
|
|
|
- <ListItem><Para>
|
|
|
|
|
- Downgradable priorities
|
|
|
|
|
- </VarListEntry>
|
|
|
|
|
-
|
|
|
|
|
- <VarListEntry><term>1000</term>
|
|
|
|
|
- <ListItem><Para>
|
|
|
|
|
- The downgrade prevention barrier
|
|
|
|
|
- </VarListEntry>
|
|
|
|
|
-
|
|
|
|
|
- <VarListEntry><term>101 to 999</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 99</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 Packages 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
|
|
|
|
|
|
|
+<RefSect1><Title>Description</>
|
|
|
|
|
+<para>
|
|
|
|
|
+The APT preferences file <filename>/etc/apt/preferences</>
|
|
|
|
|
+can be used to control which version of a package will be selected
|
|
|
|
|
+for installation.
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>Several versions of a package may be available for installation when
|
|
|
|
|
+the &sources-list; file contains references to more than one distribution
|
|
|
|
|
+(for example, <literal>stable</literal> and <literal>testing</literal>);
|
|
|
|
|
+furthermore, several instances of the same version of a package may be
|
|
|
|
|
+available when the file contains references to more than one download site
|
|
|
|
|
+for a particular distribution. APT assigns a "priority" to each instance
|
|
|
|
|
+that is available. (In what follows, an "instance" will be an instance of
|
|
|
|
|
+a package that is available according to &sources-list;.)
|
|
|
|
|
+Subject to dependency constraints, <command>apt-get</command> installs the
|
|
|
|
|
+instance with the highest priority. If two instances have the same
|
|
|
|
|
+priority then it installs the more recent one, that is, the one with the
|
|
|
|
|
+higher version number.
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>The APT preferences file overrides the priorities that APT assigns
|
|
|
|
|
+to package instances by default, thus giving the user control over which
|
|
|
|
|
+one is selected for installation.
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<RefSect2><Title>APT's Default Priority Assignments</>
|
|
|
|
|
+
|
|
|
|
|
+<para>If there is no preferences file, or if there is no entry in the file
|
|
|
|
|
+that applies to a particular instance, then the priority assigned to that
|
|
|
|
|
+instance is the priority of the distribution to which that instance
|
|
|
|
|
+belongs. It is possible to single out a distribution, called the
|
|
|
|
|
+"target release", which receives a higher priority than other distributions.
|
|
|
|
|
+The target release can be set on the <command>apt-get</command> command
|
|
|
|
|
+line or in the APT configuration file <filename>/etc/apt/apt.conf</filename>.
|
|
|
|
|
+For example,
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+# Command to install the <literal/testing/ version of <replaceable>some-package</replaceable>
|
|
|
|
|
+<command>apt-get install -t testing <replaceable>some-package</replaceable></command>
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+# Configuration setting to make <literal/stable/ the target release
|
|
|
|
|
+APT::Default-Release "stable";
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>If a target release has been specified then APT uses the following
|
|
|
|
|
+algorithm to set the priorities of the instances of a package. Assign:
|
|
|
|
|
+
|
|
|
|
|
+<variablelist>
|
|
|
|
|
+<varlistentry>
|
|
|
|
|
+<term>priority 100</term>
|
|
|
|
|
+<listitem><simpara>to the instance that is already installed (if any).
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+<varlistentry>
|
|
|
|
|
+<term>priority 500</term>
|
|
|
|
|
+<listitem><simpara>to the instances that are not installed
|
|
|
|
|
+and do not belong to the target release.
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+<varlistentry>
|
|
|
|
|
+<term>priority 990</term>
|
|
|
|
|
+<listitem><simpara>to the instances that are not installed
|
|
|
|
|
+and belong to the target release.
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+</variablelist>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>If no target release has been specified then APT simply assigns
|
|
|
|
|
+priority 100 to all installed package instances and priority 500 to all
|
|
|
|
|
+uninstalled package instances.
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>APT then applies the following rules, listed in order of precedence,
|
|
|
|
|
+to determine which instance of a package to install.
|
|
|
|
|
+
|
|
|
|
|
+<itemizedlist>
|
|
|
|
|
+<listitem><simpara>Never downgrade unless the priority of an available instance
|
|
|
|
|
+exceeds 1000. ("Downgrading" is installing a less recent version of a package
|
|
|
|
|
+in place of a more recent version. Note that none of APT's default priorities
|
|
|
|
|
+exceeds 1000; such high priorities can only be set in the preferences file.)
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+<listitem><simpara>Install the highest priority instance.
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+<listitem><simpara>If two or more instances have the same priority,
|
|
|
|
|
+install the most recent one.
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+<listitem><simpara>If two or more instances have the same version number,
|
|
|
|
|
+install the one whose source is listed earliest in &sources-list;.
|
|
|
|
|
+(The installed instance, if there is one, is always preferred in such a
|
|
|
|
|
+comparison unless <command>apt-get --reinstall</command> is used.)
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+</itemizedlist>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>In a typical situation, the installed instance of a package (priority 100)
|
|
|
|
|
+is not as recent as one of the instances available from the sources listed in
|
|
|
|
|
+the &sources-list; file (priority 500 or 990). Then the package will be
|
|
|
|
|
+upgraded with the command:
|
|
|
|
|
+<command>apt-get install</command> or <command>apt-get dist-upgrade</command>.
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>Rarely, the installed instance of a package is <emphasis/more/ recent
|
|
|
|
|
+than any of the other available instances. The package will not be downgraded.
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>Sometimes the installed instance of a package is more recent than the
|
|
|
|
|
+version belonging to the target release, but not as recent as a version
|
|
|
|
|
+belonging to some other distribution. Such a package will indeed be upgraded,
|
|
|
|
|
+because at least <emphasis/one/ of the available instances has a higher
|
|
|
|
|
+priority than the installed instance.
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+</RefSect2>
|
|
|
|
|
+
|
|
|
|
|
+<RefSect2><Title>The Effect of APT Preferences</>
|
|
|
|
|
+
|
|
|
|
|
+<para>The APT preferences file allows the system administrator to customize
|
|
|
|
|
+priorities. The file consists of one or more multi-line records separated
|
|
|
|
|
+by blank lines. Records can have one of two forms, a specific form and a
|
|
|
|
|
+general form.
|
|
|
|
|
+<itemizedlist>
|
|
|
|
|
+<listitem>
|
|
|
|
|
+<simpara>The "specific" form pins a priority (a "Pin-Priority") to a
|
|
|
|
|
+specified package and specified version or version range. For
|
|
|
|
|
+example, the following record pins a high priority to all versions of
|
|
|
|
|
+the <filename/perl/ package whose version number begins with
|
|
|
|
|
+"<literal/5.8/".
|
|
|
|
|
+</simpara>
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Package: perl
|
|
|
|
|
+Pin: version 5.8*
|
|
|
|
|
+Pin-Priority: 1001
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</listitem>
|
|
|
|
|
+
|
|
|
|
|
+<listitem><simpara>
|
|
|
|
|
+The "general" form pins a priority to all of the package versions in a
|
|
|
|
|
+given distribution (that is, to all the versions of packages that are
|
|
|
|
|
+listed in a certain <filename/Release/ file), or to all of the package
|
|
|
|
|
+instances coming from a particular Internet site, as identified by its
|
|
|
|
|
+fully qualified domain name.
|
|
|
|
|
+</simpara>
|
|
|
|
|
+
|
|
|
|
|
+<simpara>This general-form entry in the APT preferences file applies only
|
|
|
|
|
+to groups of packages. For example, the following record causes APT to
|
|
|
|
|
+assign a high priority to all package instances available from the local
|
|
|
|
|
+site.
|
|
|
|
|
+</simpara>
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Package: *
|
|
|
|
|
+Pin: origin ""
|
|
|
|
|
+Pin-Priority: 999
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+
|
|
|
|
|
+<simpara>A note of caution: the keyword used here is "<literal/origin/".
|
|
|
|
|
+This should not be confused with the "Origin:" of a distribution as
|
|
|
|
|
+specified in a <filename/Release/ file. What follows the "Origin:" tag
|
|
|
|
|
+in a <filename/Release/ file is usually not an Internet site address
|
|
|
|
|
+but an author or vendor name, such as "Debian" or "Ximian".
|
|
|
|
|
+</simpara>
|
|
|
|
|
+
|
|
|
|
|
+<simpara>The following record causes APT to assign a low priority to all
|
|
|
|
|
+package versions belonging to any distribution whose "Archive"
|
|
|
|
|
+(<literal/a/) name is "<literal/unstable/".
|
|
|
|
|
+</simpara>
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Package: *
|
|
|
|
|
+Pin: release a=unstable
|
|
|
|
|
+Pin-Priority: 50
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+
|
|
|
|
|
+<simpara>The following record causes APT to assign a high priority to all
|
|
|
|
|
+package versions belonging to any release whose "Archive" (<literal/a/)
|
|
|
|
|
+name is "<literal/stable/" and whose release "Version" (<literal/v/)
|
|
|
|
|
+number is "<literal/3.0/".
|
|
|
|
|
+</simpara>
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Package: *
|
|
|
|
|
+Pin: release a=unstable, v=3.0
|
|
|
|
|
+Pin-Priority: 50
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</listitem>
|
|
|
|
|
+</itemizedlist>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+</RefSect2>
|
|
|
|
|
+
|
|
|
|
|
+<RefSect2><Title>How APT Interprets Priorities</Title>
|
|
|
|
|
+
|
|
|
|
|
+<para>Priorities (P) assigned in the APT preferences file must be positive
|
|
|
|
|
+or negative integers. They are interpreted as follows (roughly speaking):
|
|
|
|
|
+
|
|
|
|
|
+<variablelist>
|
|
|
|
|
+<varlistentry><term>P > 1000</term>
|
|
|
|
|
+<listitem><simpara>causes an instance to be installed
|
|
|
|
|
+even if this constitutes a downgrade of the package
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+<varlistentry><term>990 < P <=1000</term>
|
|
|
|
|
+<listitem><simpara>causes an instance to be installed
|
|
|
|
|
+even if it does not come from the target release,
|
|
|
|
|
+unless the installed instance is more recent
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+<varlistentry><term>500 < P <=990</term>
|
|
|
|
|
+<listitem><simpara>causes an instance to be installed
|
|
|
|
|
+unless there is an instance available belonging to the target release
|
|
|
|
|
+or the installed version is more recent
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+<varlistentry><term>100 < P <=500</term>
|
|
|
|
|
+<listitem><simpara>causes an instance to be installed
|
|
|
|
|
+unless there is an instance available belonging to some other
|
|
|
|
|
+distribution or the installed version is more recent
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+<varlistentry><term>0 <= P <=100</term>
|
|
|
|
|
+<listitem><simpara>causes an instance to be installed
|
|
|
|
|
+only if there is no installed instance of the package
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+<varlistentry><term>P < 0</term>
|
|
|
|
|
+<listitem><simpara>prevents the instance from being installed
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+</variablelist>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>If one of the specific-form records described above matches an
|
|
|
|
|
+available package instance, then that record determines the priority of
|
|
|
|
|
+the instance. If two specific-form records match an available instance,
|
|
|
|
|
+then the first record encountered determines the priority. If two
|
|
|
|
|
+general-form records match an available instance, then the first record
|
|
|
|
|
+encountered determines the priority.
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>For example, suppose the APT preferences file contains the three
|
|
|
|
|
+records presented earlier:
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Package: perl
|
|
|
|
|
+Pin: version 5.8*
|
|
|
Pin-Priority: 1001
|
|
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 section 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 Packages files.
|
|
|
|
|
-<informalexample><programlisting>
|
|
|
|
|
|
|
+
|
|
|
Package: *
|
|
Package: *
|
|
|
-Pin: release v=2.1*
|
|
|
|
|
-Pin-Priority: 998
|
|
|
|
|
-</programlisting></informalexample>
|
|
|
|
|
- <para>
|
|
|
|
|
- If the Pin-Priority 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 cause 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>
|
|
|
|
|
-
|
|
|
|
|
|
|
+Pin: origin ""
|
|
|
|
|
+Pin-Priority: 999
|
|
|
|
|
+
|
|
|
|
|
+Package: *
|
|
|
|
|
+Pin: release unstable
|
|
|
|
|
+Pin-Priority: 50
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+
|
|
|
|
|
+Then:
|
|
|
|
|
+
|
|
|
|
|
+<itemizedlist>
|
|
|
|
|
+<listitem><simpara>The most recent available version of the <literal/perl/
|
|
|
|
|
+package will be installed, so long as that version's version number begins
|
|
|
|
|
+with "<literal/5.8/". If <emphasis/any/ 5.8* version of <literal/perl/ is
|
|
|
|
|
+available and the installed version is 5.9*, then <literal/perl/ will be
|
|
|
|
|
+downgraded.</simpara></listitem>
|
|
|
|
|
+<listitem><simpara>An instance of any package other than <literal/perl/
|
|
|
|
|
+that is available from the local system has priority over other instances,
|
|
|
|
|
+even instances belonging to the target release.
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+<listitem><simpara>An instance of a package whose origin is not the local
|
|
|
|
|
+system but some other site listed in &sources-list;, and which belongs to
|
|
|
|
|
+an "<literal/unstable/" distribution, is only installed if it is selected
|
|
|
|
|
+for installation and no instance of the package is already installed.
|
|
|
|
|
+</simpara></listitem>
|
|
|
|
|
+</itemizedlist>
|
|
|
|
|
+</para>
|
|
|
|
|
+</RefSect2>
|
|
|
|
|
+
|
|
|
|
|
+<RefSect2><Title>Determination of Package Version and Distribution Properties</Title>
|
|
|
|
|
+
|
|
|
|
|
+<para>The locations listed in a system's &sources-list; file should provide
|
|
|
|
|
+<filename>Packages</filename> and <filename>Release</filename> files
|
|
|
|
|
+to describe the package instances available at that location.
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>The <filename>Packages</filename> file is normally found in the directory
|
|
|
|
|
+<filename>.../dists/<replaceable>dist-name</replaceable>/<replaceable>component</replaceable>/<replaceable>arch</replaceable></filename>:
|
|
|
|
|
+for example, <filename>.../dists/stable/main/binary-i386/Packages</filename>.
|
|
|
|
|
+It consists of a series of multi-line records, one for each package available
|
|
|
|
|
+in that directory. Only two lines in each record are relevant for setting
|
|
|
|
|
+APT priorities:
|
|
|
|
|
+<variablelist>
|
|
|
|
|
+<varlistentry>
|
|
|
|
|
+<term>the <literal/Package:/ line</term>
|
|
|
|
|
+<listitem><simpara>gives the package name</simpara></listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+<varlistentry>
|
|
|
|
|
+<term>the <literal/Version:/ line</term>
|
|
|
|
|
+<listitem><simpara>gives the version number for the named package</simpara></listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+</variablelist>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>The <filename>Release</filename> file is normally found in the directory
|
|
|
|
|
+<filename>.../dists/<replaceable>dist-name</replaceable></filename>:
|
|
|
|
|
+for example, <filename>.../dists/stable/Release</filename>,
|
|
|
|
|
+or <filename>.../dists/woody/Release</filename>.
|
|
|
|
|
+It consists of a single multi-line record which applies to <emphasis/all/ of
|
|
|
|
|
+the package instances in the directory tree below its parent. Unlike the
|
|
|
|
|
+<filename/Packages/ file, nearly all of the lines in a <filename/Release/
|
|
|
|
|
+file are relevant for setting APT priorities:
|
|
|
|
|
+
|
|
|
|
|
+<variablelist>
|
|
|
|
|
+<varlistentry>
|
|
|
|
|
+<term>the <literal/Archive:/ line</term>
|
|
|
|
|
+<listitem><simpara>names the archive to which all the package instances
|
|
|
|
|
+in the directory tree belong. For example, the line
|
|
|
|
|
+<literal/Archive: stable/ specifies that all of the packages in the directory
|
|
|
|
|
+tree below the parent of the <filename/Release/ file are in the
|
|
|
|
|
+<literal/stable/ archive. Specifying this value in the APT preferences file
|
|
|
|
|
+would require the line:
|
|
|
|
|
+</simpara>
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Pin: release a=stable
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+
|
|
|
|
|
+<varlistentry>
|
|
|
|
|
+<term>the <literal/Version:/ line</term>
|
|
|
|
|
+<listitem><simpara>names the release version. For example, the
|
|
|
|
|
+package instances in the tree might belong to Debian GNU/Linux release
|
|
|
|
|
+version 3.0. There is normally no version number for the "testing" and
|
|
|
|
|
+"unstable" distributions because they have not yet been released.
|
|
|
|
|
+Specifying this in the APT preferences file would require one of the
|
|
|
|
|
+following lines.
|
|
|
|
|
+</simpara>
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Pin: release v=3.0
|
|
|
|
|
+Pin: release a=stable v=3.0
|
|
|
|
|
+Pin: release 3.0
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+
|
|
|
|
|
+</listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+
|
|
|
|
|
+<varlistentry>
|
|
|
|
|
+<term>the <literal/Component:/ line</term>
|
|
|
|
|
+<listitem><simpara>names the licensing component associated with the
|
|
|
|
|
+package instances in the directory tree of the <filename/Release/
|
|
|
|
|
+file. For example, the line <literal/Component: main/ specifies that
|
|
|
|
|
+all the instances in the directory tree are from the <literal/main/
|
|
|
|
|
+component, meaning that they are licensed under terms listed in the
|
|
|
|
|
+Debian Free Software Guidelines. Specifying this component in the
|
|
|
|
|
+APT preferences file would require the line:
|
|
|
|
|
+</simpara>
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Pin: release c=main
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+
|
|
|
|
|
+<varlistentry>
|
|
|
|
|
+<term>the <literal/Origin:/ line</term>
|
|
|
|
|
+<listitem><simpara>names the producer of the package instances in the
|
|
|
|
|
+directory tree of the <filename/Release/ file. Most commonly, this is
|
|
|
|
|
+<literal/Debian/. Specifying this origin in the APT preferences file
|
|
|
|
|
+would require the line:
|
|
|
|
|
+</simpara>
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Pin: release o=Debian
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+
|
|
|
|
|
+<varlistentry>
|
|
|
|
|
+<term>the <literal/Label:/ line</term>
|
|
|
|
|
+<listitem><simpara>seems redundant. Most commonly, this is
|
|
|
|
|
+<literal/Debian/. Specifying this label in the APT preferences file
|
|
|
|
|
+would require the line:
|
|
|
|
|
+</simpara>
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Pin: release l=Debian
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</listitem>
|
|
|
|
|
+</varlistentry>
|
|
|
|
|
+</variablelist>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>All of the <filename>Packages</filename> and <filename>Release</filename>
|
|
|
|
|
+files retrieved from locations listed in the &sources-list; file are kept
|
|
|
|
|
+in the directory <filename>/var/lib/apt/lists</filename>, or in the file named
|
|
|
|
|
+by the variable <literal/Dir::State::Lists/ in the <filename/apt.conf/ file.
|
|
|
|
|
+For example, the file
|
|
|
|
|
+<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release</filename>
|
|
|
|
|
+contains the <filename>Release</filename> file retrieved from the site
|
|
|
|
|
+<literal/debian.lcs.mit.edu/ for <literal/binary-i386/ architecture
|
|
|
|
|
+files from the <literal/contrib/ component of the <literal/unstable/
|
|
|
|
|
+distribution.
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+</RefSect2>
|
|
|
|
|
+
|
|
|
|
|
+<RefSect2><Title>Optional Lines in an APT Preferences Record</Title>
|
|
|
|
|
+
|
|
|
|
|
+<para>Each record in the APT preferences file can optionally begin with
|
|
|
|
|
+one or more lines beginning with the word <literal/Explanation:/.
|
|
|
|
|
+This provides an opportunity to comment on the record.
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>The <literal/Pin-Priority:/ line in each APT preferences record is
|
|
|
|
|
+optional. If omitted, APT assigs a priority of 1 less than the last value
|
|
|
|
|
+specified on a line beginning with <literal/Pin-Priority: release .../.
|
|
|
|
|
+</para>
|
|
|
|
|
+</RefSect2>
|
|
|
|
|
+</RefSect1>
|
|
|
|
|
+
|
|
|
|
|
+<RefSect1><Title>Examples</>
|
|
|
|
|
+<RefSect2><Title>Tracking Stable</Title>
|
|
|
|
|
+
|
|
|
|
|
+<para>The following APT preferences file will cause APT to assign a
|
|
|
|
|
+priority higher than the default (500) to all package versions belonging
|
|
|
|
|
+to a <literal/stable/ distribution and a prohibitively low priority to
|
|
|
|
|
+package versions belonging to other <literal/Debian/ distributions.
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Package: *
|
|
|
|
|
+Pin: release a=stable
|
|
|
|
|
+Pin-Priority: 900
|
|
|
|
|
+
|
|
|
|
|
+Explanation: Uninstall or do not install any Debian-originated
|
|
|
|
|
+Explanation: instances other than those in the stable distro
|
|
|
|
|
+Package: *
|
|
|
|
|
+Pin: release o=Debian
|
|
|
|
|
+Pin-Priority: -10
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>
|
|
|
|
|
+With a suitable &sources-list; file and the above preferences file,
|
|
|
|
|
+any of the following commands will cause APT to upgrade to the
|
|
|
|
|
+latest <literal/stable/ version(s).
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+apt-get install <replaceable>package-name</replaceable>
|
|
|
|
|
+apt-get upgrade
|
|
|
|
|
+apt-get dist-upgrade
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>The following command will cause APT to upgrade the specified
|
|
|
|
|
+package to the latest version from the <literal/testing/ distribution;
|
|
|
|
|
+further upgrades will not occur automatically, however.
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+apt-get install <replaceable>package</replaceable>/testing
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</RefSect2>
|
|
|
|
|
+
|
|
|
|
|
+ <RefSect2><Title>Tracking Testing</Title>
|
|
|
|
|
+
|
|
|
|
|
+<para>The following APT preferences file will cause APT to assign
|
|
|
|
|
+a high priority to package versions from the <literal/testing/
|
|
|
|
|
+distribution, a lesser priority to package versions from the
|
|
|
|
|
+<literal/unstable/ distribution, and a prohibitively low priority
|
|
|
|
|
+to package versions from other <literal/Debian/ distributions.
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+Package: *
|
|
|
|
|
+Pin: release a=testing
|
|
|
|
|
+Pin-Priority: 900
|
|
|
|
|
+
|
|
|
|
|
+Package: *
|
|
|
|
|
+Pin: release a=unstable
|
|
|
|
|
+Pin-Priority: 800
|
|
|
|
|
+
|
|
|
|
|
+Package: *
|
|
|
|
|
+Pin: release o=Debian
|
|
|
|
|
+Pin-Priority: -10
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>
|
|
|
|
|
+With the above APT preferences file, any of the
|
|
|
|
|
+following commands will cause APT to upgrade to the latest
|
|
|
|
|
+<literal/testing/ version(s).
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+apt-get install <replaceable>package-name</replaceable>
|
|
|
|
|
+apt-get upgrade
|
|
|
|
|
+apt-get dist-upgrade
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+<para>The following command will cause APT to upgrade the specified
|
|
|
|
|
+package to the latest version from the <literal/unstable/ distribution.
|
|
|
|
|
+Thereafter, <command>apt-get dist-upgrade</command> and the others
|
|
|
|
|
+<emphasis/will/ cause upgrade of the package to the latest
|
|
|
|
|
+<literal/unstable/ version.
|
|
|
|
|
+
|
|
|
|
|
+<programlisting>
|
|
|
|
|
+apt-get install <replaceable>package</replaceable>/unstable
|
|
|
|
|
+</programlisting>
|
|
|
|
|
+</para>
|
|
|
|
|
+
|
|
|
|
|
+</RefSect2>
|
|
|
|
|
+</RefSect1>
|
|
|
|
|
+
|
|
|
<RefSect1><Title>See Also</>
|
|
<RefSect1><Title>See Also</>
|
|
|
- <para>
|
|
|
|
|
- &apt-cache; &apt-conf;
|
|
|
|
|
|
|
+<para>
|
|
|
|
|
+&apt-get; &apt-cache; &apt-conf; &sources-list;
|
|
|
</RefSect1>
|
|
</RefSect1>
|
|
|
|
|
|
|
|
&manbugs;
|
|
&manbugs;
|
|
|
&manauthor;
|
|
&manauthor;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
</refentry>
|
|
</refentry>
|