X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/9abccf4a63b6c887b213678d940fe912233f04c3..5fba53e44b40aaba1c459c9efb3e73afae3f5a31:/doc/apt_preferences.5.xml diff --git a/doc/apt_preferences.5.xml b/doc/apt_preferences.5.xml index f08f92b94..79132e007 100644 --- a/doc/apt_preferences.5.xml +++ b/doc/apt_preferences.5.xml @@ -1,13 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="no"?> -<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" - "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ - -<!ENTITY % aptent SYSTEM "apt.ent"> -%aptent; - -<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> -%aptverbatiment; - +<!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 % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor; ]> <refentry> @@ -17,7 +13,7 @@ &apt-email; &apt-product; <!-- The last update date --> - <date>16 February 2010</date> + <date>2012-06-09T00:00:00Z</date> </refentryinfo> <refmeta> @@ -45,7 +41,7 @@ the &sources-list; file contains references to more than one distribution APT assigns a priority to each version that is available. Subject to dependency constraints, <command>apt-get</command> selects the version with the highest priority for installation. -The APT preferences file overrides the priorities that APT assigns to +The APT preferences override the priorities that APT assigns to package versions by default, thus giving the user control over which one is selected for installation.</para> @@ -53,17 +49,17 @@ one is selected for installation.</para> the &sources-list; file contains references to more than one source. In this case <command>apt-get</command> downloads the instance listed earliest in the &sources-list; file. -The APT preferences file does not affect the choice of instance, only +The APT preferences do not affect the choice of instance, only the choice of version.</para> <para>Preferences are a strong power in the hands of a system administrator but they can become also their biggest nightmare if used without care! -APT will not questioning the preferences so wrong settings will therefore +APT will not question the preferences, so wrong settings can lead to uninstallable packages or wrong decisions while upgrading packages. -Even more problems will arise if multiply distribution releases are mixed +Even more problems will arise if multiple distribution releases are mixed without a good understanding of the following paragraphs. -Packages included in a specific release aren't tested in and -therefore doesn't always work as expected in older or newer releases or +Packages included in a specific release aren't tested in (and +therefore don't always work as expected in) older or newer releases, or together with other packages from different releases. You have been warned.</para> @@ -72,9 +68,9 @@ directory are parsed in alphanumeric ascending order and need to obey the following naming convention: The files have either no or "<literal>pref</literal>" as filename extension and only contain alphanumeric, hyphen (-), underscore (_) and period (.) characters. -Otherwise APT will print a notice that it has ignored a file if the file -doesn't match a pattern in the <literal>Dir::Ignore-Files-Silently</literal> -configuration list - in this case it will be silently ignored.</para> +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 which case it will be silently ignored.</para> <refsect2><title>APT's Default Priority Assignments</title> @@ -106,27 +102,30 @@ algorithm to set the priorities of the versions of a package. Assign: <term>priority 1</term> <listitem><simpara>to the versions coming from archives which in their <filename>Release</filename> files are marked as "NotAutomatic: yes" but <emphasis>not</emphasis> as "ButAutomaticUpgrades: yes" -like the debian <literal>experimental</literal> archive.</simpara></listitem> +like the Debian <literal>experimental</literal> archive.</simpara></listitem> </varlistentry> <varlistentry> <term>priority 100</term> <listitem><simpara>to the version that is already installed (if any) and to the versions coming from archives which in their <filename>Release</filename> files are marked as "NotAutomatic: yes" and -"ButAutomaticUpgrades: yes" like the debian backports archive since <literal>squeeze-backports</literal>. +"ButAutomaticUpgrades: yes" like the Debian backports archive since <literal>squeeze-backports</literal>. </simpara></listitem> </varlistentry> <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 @@ -185,14 +184,14 @@ and a general form. <itemizedlist> <listitem> <simpara>The specific form assigns a priority (a "Pin-Priority") to one or more -specified packages and specified version or version range. For example, +specified packages with a specified version or version range. For example, the following record assigns a high priority to all versions of -the <filename>perl</filename> package whose version number begins with "<literal>5.8</literal>". +the <filename>perl</filename> package whose version number begins with "<literal>&good-perl;</literal>". Multiple packages can be separated by spaces.</simpara> <programlisting> Package: perl -Pin: version 5.8* +Pin: version &good-perl;* Pin-Priority: 1001 </programlisting> </listitem> @@ -246,56 +245,62 @@ Pin-Priority: 900 <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>3.0</literal>".</simpara> +and whose release Version number is "<literal>&stable-version;</literal>".</simpara> <programlisting> Package: * -Pin: release a=stable, v=3.0 +Pin: release a=stable, v=&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> -<refsect2><title>Regular expressions and glob() syntax</title> +<refsect2><title>Regular expressions and &glob; syntax</title> <para> -APT also supports pinning by glob() expressions and regular -expressions surrounded by /. For example, the following +APT also supports pinning by &glob; expressions, and regular +expressions surrounded by slashes. For example, the following example assigns the priority 500 to all packages from -experimental where the name starts with gnome (as a glob()-like +experimental where the name starts with gnome (as a &glob;-like expression) or contains the word kde (as a POSIX extended regular expression surrounded by slashes). </para> <programlisting> Package: gnome* /kde/ -Pin: release n=experimental +Pin: release a=experimental Pin-Priority: 500 </programlisting> <para> The rule for those expressions is that they can occur anywhere where a string can occur. Thus, the following pin assigns the -priority 990 to all packages from a release starting with karmic. +priority 990 to all packages from a release starting with &ubuntu-codename;. </para> <programlisting> Package: * -Pin: release n=karmic* +Pin: release n=&ubuntu-codename;* Pin-Priority: 990 </programlisting> +<para> If a regular expression occurs in a <literal>Package</literal> field, the behavior is the same as if this regular expression were replaced with a list of all package names it matches. It is undecided whether -this will change in the future, thus you should always list wild-card +this will change in the future; thus you should always list wild-card pins first, so later specific pins override it. The pattern "<literal>*</literal>" in a Package field is not considered -a glob() expression in itself. - +a &glob; expression in itself. +</para> </refsect2> @@ -311,30 +316,30 @@ or negative integers. They are interpreted as follows (roughly speaking): <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> @@ -342,21 +347,28 @@ only if there is no installed version of the package</simpara></listitem> <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> <programlisting> Package: perl -Pin: version 5.8* +Pin: version &good-perl;* Pin-Priority: 1001 Package: * @@ -372,8 +384,8 @@ Pin-Priority: 50 <itemizedlist> <listitem><simpara>The most recent available version of the <literal>perl</literal> package will be installed, so long as that version's version number begins -with "<literal>5.8</literal>". If <emphasis>any</emphasis> 5.8* version of <literal>perl</literal> is -available and the installed version is 5.9*, then <literal>perl</literal> will be +with "<literal>&good-perl;</literal>". If <emphasis>any</emphasis> &good-perl;* version of <literal>perl</literal> is +available and the installed version is &bad-perl;*, then <literal>perl</literal> will be downgraded.</simpara></listitem> <listitem><simpara>A version of any package other than <literal>perl</literal> that is available from the local system has priority over other versions, @@ -459,17 +471,17 @@ Pin: release n=&testing-codename; <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 GNU/Linux release -version 3.0. Note that there is normally no version number for the +packages in the tree might belong to Debian release +version &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=3.0 -Pin: release a=stable, v=3.0 -Pin: release 3.0 +Pin: release v=&stable-version; +Pin: release a=stable, v=&stable-version; +Pin: release &stable-version; </programlisting> </listitem>