]> git.saurik.com Git - apt.git/blobdiff - doc/apt_preferences.5.xml
More changes to make imediate configuration work for all packages,
[apt.git] / doc / apt_preferences.5.xml
index 12ea606b7a05ea7294354eb8d41d3b4a6908b196..f08f92b94464a4740382d0e40e894ecd5ea2d517 100644 (file)
@@ -5,6 +5,9 @@
 <!ENTITY % aptent SYSTEM "apt.ent">
 %aptent;
 
+<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent">
+%aptverbatiment;
+
 ]>
 
 <refentry>
@@ -14,7 +17,7 @@
    &apt-email;
    &apt-product;
    <!-- The last update date -->
-   <date>04 May 2009</date>
+   <date>16 February 2010</date>
  </refentryinfo>
 
  <refmeta>
@@ -32,7 +35,8 @@
 <refsect1>
 <title>Description</title>
 <para>The APT preferences file <filename>/etc/apt/preferences</filename>
-can be used to control which versions of packages will be selected
+and the fragment files in the <filename>/etc/apt/preferences.d/</filename>
+folder can be used to control which versions of packages will be selected
 for installation.</para>
 
 <para>Several versions of a package may be available for installation when
@@ -52,6 +56,26 @@ earliest in the &sources-list; file.
 The APT preferences file does 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
+lead to uninstallable packages or wrong decisions while upgrading packages.
+Even more problems will arise if multiply 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
+together with other packages from different releases.
+You have been warned.</para>
+
+<para>Note that the files in the <filename>/etc/apt/preferences.d</filename>
+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>
+
 <refsect2><title>APT's Default Priority Assignments</title>
 
 <para>If there is no preferences file or if there is no entry in the file
@@ -78,9 +102,19 @@ APT::Default-Release "stable";
 algorithm to set the priorities of the versions of a package.  Assign:
 
 <variablelist>
+<varlistentry>
+<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>
+</varlistentry>
+
 <varlistentry>
 <term>priority 100</term>
-<listitem><simpara>to the version that is already installed (if any).</simpara></listitem>
+<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>.
+</simpara></listitem>
 </varlistentry>
 
 <varlistentry>
@@ -97,7 +131,10 @@ algorithm to set the priorities of the versions of a package.  Assign:
 
 <para>If the target release has not been specified then APT simply assigns
 priority 100 to all installed package versions and priority 500 to all
-uninstalled package versions.</para>
+uninstalled package versions, except versions coming from archives which
+in their <filename>Release</filename> files are marked as "NotAutomatic: yes" -
+these versions get the priority 1 or priority 100 if it is additionally marked
+as "ButAutomaticUpgrades: yes".</para>
 
 <para>APT then applies the following rules, listed in order of precedence,
 to determine which version of a package to install.
@@ -176,8 +213,15 @@ Pin: origin ""
 Pin-Priority: 999
 </programlisting>
 
-<simpara>A note of caution: the keyword used here is "<literal>origin</literal>".
-This should not be confused with the Origin of a distribution as
+<simpara>A note of caution: the keyword used here is "<literal>origin</literal>"
+which can be used to match a hostname. The following record will assign a high priority
+to all versions available from the server identified by the hostname "ftp.de.debian.org"</simpara>
+<programlisting>
+Package: *
+Pin: origin "ftp.de.debian.org"
+Pin-Priority: 999
+</programlisting>
+<simpara>This should <emphasis>not</emphasis> be confused with the Origin of a distribution as
 specified in a <filename>Release</filename> file.  What follows the "Origin:" tag
 in a <filename>Release</filename> file is not an Internet address
 but an author or vendor name, such as "Debian" or "Ximian".</simpara>
@@ -192,11 +236,11 @@ Pin-Priority: 50
 </programlisting>
 
 <simpara>The following record assigns a high priority to all package versions
-belonging to any distribution whose Codename is "<literal>squeeze</literal>".</simpara>
+belonging to any distribution whose Codename is "<literal>&testing-codename;</literal>".</simpara>
 
 <programlisting>
 Package: *
-Pin: release n=squeeze
+Pin: release n=&testing-codename;
 Pin-Priority: 900
 </programlisting>
 
@@ -215,6 +259,49 @@ Pin-Priority: 500
 
 </refsect2>
 
+<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
+example assigns the priority 500 to all packages from
+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-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.
+</para>
+
+<programlisting>
+Package: *
+Pin: release n=karmic*
+Pin-Priority: 990
+</programlisting>
+
+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
+pins first, so later specific pins override it.
+
+The pattern "<literal>*</literal>" in a Package field is not considered
+a glob() expression in itself.
+
+</refsect2>
+
+
+
+
+
 <refsect2>
 <title>How APT Interprets Priorities</title>
 
@@ -329,7 +416,7 @@ APT priorities:
 <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>.
+or <filename>.../dists/&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>
@@ -357,14 +444,14 @@ Pin: release a=stable
 <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: squeeze"
+"Codename: &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>squeeze</literal>.  Specifying this value in the APT preferences file
+<literal>&testing-codename;</literal>.  Specifying this value in the APT preferences file
 would require the line:
 </simpara>
 <programlisting>
-Pin: release n=squeeze
+Pin: release n=&testing-codename;
 </programlisting>
 </listitem>
 </varlistentry>
@@ -450,10 +537,6 @@ distribution.</para>
 <para>Each record in the APT preferences file can optionally begin with
 one or more lines beginning with the word <literal>Explanation:</literal>.
 This provides a place for comments.</para>
-
-<para>The <literal>Pin-Priority:</literal> line in each APT preferences record is
-optional.  If omitted, APT assigns a priority of 1 less than the last value
-specified on a line beginning with <literal>Pin-Priority: release ...</literal>.</para>
 </refsect2>
 </refsect1>
 
@@ -568,14 +651,14 @@ the example configurations above.
 
 <programlisting>
 Explanation: Uninstall or do not install any Debian-originated package versions
-Explanation: other than those in the distribution codenamed with squeeze or sid
+Explanation: other than those in the distribution codenamed with &testing-codename; or sid
 Package: *
-Pin: release n=squeeze
+Pin: release n=&testing-codename;
 Pin-Priority: 900
 
 Explanation: Debian unstable is always codenamed with sid
 Package: *
-Pin: release a=sid
+Pin: release n=sid
 Pin-Priority: 800
 
 Package: *
@@ -586,7 +669,7 @@ Pin-Priority: -10
 
 <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>squeeze</literal>.
+latest version(s) in the release codenamed with <literal>&testing-codename;</literal>.
 
 <programlisting>
 apt-get install <replaceable>package-name</replaceable>
@@ -598,7 +681,7 @@ apt-get dist-upgrade
 <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>squeeze</literal> version if that is
+the package to the most recent <literal>&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.
@@ -610,6 +693,13 @@ apt-get install <replaceable>package</replaceable>/sid
 </refsect2>
 </refsect1>
 
+<refsect1>
+<title>Files</title>
+  <variablelist>
+    &file-preferences;
+  </variablelist>
+</refsect1>
+
 <refsect1>
 <title>See Also</title>
 <para>&apt-get; &apt-cache; &apt-conf; &sources-list;