X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/f7d6459db697c6dbba8e5d787a817e7721bfb577..178dd062eeaa1d7e56770455e005dc27aa71f026:/doc/apt_preferences.5.xml diff --git a/doc/apt_preferences.5.xml b/doc/apt_preferences.5.xml index 159d61f2b..f08f92b94 100644 --- a/doc/apt_preferences.5.xml +++ b/doc/apt_preferences.5.xml @@ -5,6 +5,9 @@ %aptent; + +%aptverbatiment; + ]> @@ -14,7 +17,7 @@ &apt-email; &apt-product; - 04 May 2009 + 16 February 2010 @@ -53,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. +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. + +Note that the files in the /etc/apt/preferences.d +directory are parsed in alphanumeric ascending order and need to obey the +following naming convention: The files have either no or "pref" +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 Dir::Ignore-Files-Silently +configuration list - in this case it will be silently ignored. + APT's Default Priority Assignments If there is no preferences file or if there is no entry in the file @@ -79,9 +102,19 @@ APT::Default-Release "stable"; algorithm to set the priorities of the versions of a package. Assign: + +priority 1 +to the versions coming from archives which in their Release +files are marked as "NotAutomatic: yes" but not as "ButAutomaticUpgrades: yes" +like the debian experimental archive. + + priority 100 -to the version that is already installed (if any). +to the version that is already installed (if any) and to the versions coming +from archives which in their Release files are marked as "NotAutomatic: yes" and +"ButAutomaticUpgrades: yes" like the debian backports archive since squeeze-backports. + @@ -98,7 +131,10 @@ algorithm to set the priorities of the versions of a package. Assign: 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. +uninstalled package versions, except versions coming from archives which +in their Release files are marked as "NotAutomatic: yes" - +these versions get the priority 1 or priority 100 if it is additionally marked +as "ButAutomaticUpgrades: yes". APT then applies the following rules, listed in order of precedence, to determine which version of a package to install. @@ -177,8 +213,15 @@ Pin: origin "" Pin-Priority: 999 -A note of caution: the keyword used here is "origin". -This should not be confused with the Origin of a distribution as +A note of caution: the keyword used here is "origin" +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" + +Package: * +Pin: origin "ftp.de.debian.org" +Pin-Priority: 999 + +This should not be confused with the Origin of a distribution as specified in a Release file. What follows the "Origin:" tag in a Release file is not an Internet address but an author or vendor name, such as "Debian" or "Ximian". @@ -193,11 +236,11 @@ Pin-Priority: 50 The following record assigns a high priority to all package versions -belonging to any distribution whose Codename is "squeeze". +belonging to any distribution whose Codename is "&testing-codename;". Package: * -Pin: release n=squeeze +Pin: release n=&testing-codename; Pin-Priority: 900 @@ -216,6 +259,49 @@ Pin-Priority: 500 +Regular expressions and glob() syntax + +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). + + + +Package: gnome* /kde/ +Pin: release n=experimental +Pin-Priority: 500 + + + +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. + + + +Package: * +Pin: release n=karmic* +Pin-Priority: 990 + + +If a regular expression occurs in a Package 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 "*" in a Package field is not considered +a glob() expression in itself. + + + + + + + How APT Interprets Priorities @@ -330,7 +416,7 @@ APT priorities: The Release file is normally found in the directory .../dists/dist-name: for example, .../dists/stable/Release, -or .../dists/woody/Release. +or .../dists/&stable-codename;/Release. It consists of a single multi-line record which applies to all of the packages in the directory tree below its parent. Unlike the Packages file, nearly all of the lines in a Release @@ -358,14 +444,14 @@ Pin: release a=stable the Codename: line 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 Release file belong to a version named -squeeze. Specifying this value in the APT preferences file +&testing-codename;. Specifying this value in the APT preferences file would require the line: -Pin: release n=squeeze +Pin: release n=&testing-codename; @@ -451,10 +537,6 @@ distribution. Each record in the APT preferences file can optionally begin with one or more lines beginning with the word Explanation:. This provides a place for comments. - -The Pin-Priority: 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 Pin-Priority: release .... @@ -569,14 +651,14 @@ the example configurations above. 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: * @@ -587,7 +669,7 @@ Pin-Priority: -10 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 squeeze. +latest version(s) in the release codenamed with &testing-codename;. apt-get install package-name @@ -599,7 +681,7 @@ apt-get dist-upgrade The following command will cause APT to upgrade the specified package to the latest version from the sid distribution. Thereafter, apt-get upgrade will upgrade -the package to the most recent squeeze version if that is +the package to the most recent &testing-codename; version if that is more recent than the installed version, otherwise, to the most recent sid version if that is more recent than the installed version.