<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-
-<!ENTITY % aptent SYSTEM "apt.ent">
-%aptent;
-
-<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent">
-%aptverbatiment;
-
-<!ENTITY good-perl "5.10">
-<!ENTITY bad-perl "5.14">
-
+<!ENTITY % aptent SYSTEM "apt.ent"> %aptent;
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment;
+<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor;
]>
<refentry>
&apt-email;
&apt-product;
<!-- The last update date -->
- <date>2010-02-16T00:00:00Z</date>
+ <date>2015-08-15T00:00:00Z</date>
</refentryinfo>
<refmeta>
underscore (_) and period (.) characters.
Otherwise APT will print a notice that it has ignored a file, unless that
file matches a pattern in the <literal>Dir::Ignore-Files-Silently</literal>
-configuration list - in this case it will be silently ignored.</para>
+configuration list - in which case it will be silently ignored.</para>
<refsect2><title>APT's Default Priority Assignments</title>
<varlistentry>
<term>priority 500</term>
-<listitem><simpara>to the versions that are not installed and do not belong to the target release.</simpara></listitem>
+<listitem><simpara>to the versions that do not belong to the target release.</simpara></listitem>
</varlistentry>
<varlistentry>
<term>priority 990</term>
-<listitem><simpara>to the versions that are not installed and belong to the target release.</simpara></listitem>
+<listitem><simpara>to the versions that belong to the target release.</simpara></listitem>
</varlistentry>
</variablelist>
+
+The highest of those priorities whose description matches the version is assigned to the
+version.
</para>
<para>If the target release has not been specified then APT simply assigns
</programlisting>
<simpara>The following record assigns a high priority to all package versions
-belonging to any distribution whose Codename is "<literal>&testing-codename;</literal>".</simpara>
+belonging to any distribution whose Codename is "<literal>&debian-testing-codename;</literal>".</simpara>
<programlisting>
Package: *
-Pin: release n=&testing-codename;
+Pin: release n=&debian-testing-codename;
Pin-Priority: 900
</programlisting>
<simpara>The following record assigns a high priority to all package versions
belonging to any release whose Archive name is "<literal>stable</literal>"
-and whose release Version number is "<literal>&stable-version;</literal>".</simpara>
+and whose release Version number is "<literal>&debian-stable-version;</literal>".</simpara>
<programlisting>
Package: *
-Pin: release a=stable, v=&stable-version;
+Pin: release a=stable, v=&debian-stable-version;
Pin-Priority: 500
</programlisting>
</listitem>
</itemizedlist>
+
+The effect of the comma operator is similar to an "and" in logic: All
+conditions must be satisfied for the pin to match. There is one exception:
+For any type of condition (such as two "a" conditions), only the last such
+condition is checked.
</para>
</refsect2>
<programlisting>
Package: gnome* /kde/
-Pin: release n=experimental
+Pin: release a=experimental
Pin-Priority: 500
</programlisting>
<variablelist>
<varlistentry>
-<term>P > 1000</term>
+<term>P >= 1000</term>
<listitem><simpara>causes a version to be installed even if this
constitutes a downgrade of the package</simpara></listitem>
</varlistentry>
<varlistentry>
-<term>990 < P <=1000</term>
+<term>990 <= P < 1000</term>
<listitem><simpara>causes a version to be installed
even if it does not come from the target release,
unless the installed version is more recent</simpara></listitem>
</varlistentry>
<varlistentry>
-<term>500 < P <=990</term>
+<term>500 <= P < 990</term>
<listitem><simpara>causes a version to be installed
unless there is a version available belonging to the target release
or the installed version is more recent</simpara></listitem>
</varlistentry>
<varlistentry>
-<term>100 < P <=500</term>
+<term>100 <= P < 500</term>
<listitem><simpara>causes a version to be installed
unless there is a version available belonging to some other
distribution or the installed version is more recent</simpara></listitem>
</varlistentry>
<varlistentry>
-<term>0 < P <=100</term>
+<term>0 < P < 100</term>
<listitem><simpara>causes a version to be installed
only if there is no installed version of the package</simpara></listitem>
</varlistentry>
<term>P < 0</term>
<listitem><simpara>prevents the version from being installed</simpara></listitem>
</varlistentry>
+<varlistentry>
+<term>P = 0</term>
+<listitem><simpara>has undefined behaviour, do not use it.</simpara></listitem>
+</varlistentry>
</variablelist>
</para>
-<para>If any specific-form records match an available package version then the
-first such record determines the priority of the package version.
-Failing that,
-if any general-form records match an available package version then the
-first such record determines the priority of the package version.</para>
+<para>
+The first specific-form record matching an available package version determines
+the priority of the package version.
+Failing that, the priority of the package is defined as the maximum of all
+priorities defined by generic-form records matching the version.
+Records defined using patterns in the Pin field other than "*" are treated like
+specific-form records.
+</para>
<para>For example, suppose the APT preferences file contains the three
records presented earlier:</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/&stable-codename;/Release</filename>.
+or <filename>.../dists/&debian-stable-codename;/Release</filename>.
It consists of a single multi-line record which applies to <emphasis>all</emphasis> of
the packages in the directory tree below its parent. Unlike the
<filename>Packages</filename> file, nearly all of the lines in a <filename>Release</filename>
<term>the <literal>Codename:</literal> line</term>
<listitem><simpara>names the codename to which all the packages
in the directory tree belong. For example, the line
-"Codename: &testing-codename;"
+"Codename: &debian-testing-codename;"
specifies that all of the packages in the directory
tree below the parent of the <filename>Release</filename> file belong to a version named
-<literal>&testing-codename;</literal>. Specifying this value in the APT preferences file
+<literal>&debian-testing-codename;</literal>. Specifying this value in the APT preferences file
would require the line:
</simpara>
<programlisting>
-Pin: release n=&testing-codename;
+Pin: release n=&debian-testing-codename;
</programlisting>
</listitem>
</varlistentry>
<term>the <literal>Version:</literal> line</term>
<listitem><simpara>names the release version. For example, the
packages in the tree might belong to Debian release
-version &stable-version;. Note that there is normally no version number for the
+version &debian-stable-version;. Note that there is normally no version number for the
<literal>testing</literal> and <literal>unstable</literal> distributions because they
have not been released yet. Specifying this in the APT preferences
file would require one of the following lines.
</simpara>
<programlisting>
-Pin: release v=&stable-version;
-Pin: release a=stable, v=&stable-version;
-Pin: release &stable-version;
+Pin: release v=&debian-stable-version;
+Pin: release a=stable, v=&debian-stable-version;
+Pin: release &debian-stable-version;
</programlisting>
</listitem>
<programlisting>
Explanation: Uninstall or do not install any Debian-originated package versions
-Explanation: other than those in the distribution codenamed with &testing-codename; or sid
+Explanation: other than those in the distribution codenamed with &debian-testing-codename; or sid
Package: *
-Pin: release n=&testing-codename;
+Pin: release n=&debian-testing-codename;
Pin-Priority: 900
Explanation: Debian unstable is always codenamed with sid
<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 version(s) in the release codenamed with <literal>&testing-codename;</literal>.
+latest version(s) in the release codenamed with <literal>&debian-testing-codename;</literal>.
<programlisting>
apt-get install <replaceable>package-name</replaceable>
<para>The following command will cause APT to upgrade the specified
package to the latest version from the <literal>sid</literal> distribution.
Thereafter, <command>apt-get upgrade</command> will upgrade
-the package to the most recent <literal>&testing-codename;</literal> version if that is
+the package to the most recent <literal>&debian-testing-codename;</literal> version if that is
more recent than the installed version, otherwise, to the most recent
<literal>sid</literal> version if that is more recent than the installed
version.