Die APT-Einstellungsdatei /etc/apt/preferences und Teildateien im Verzeichnis /etc/apt/preferences.d/ können benutzt werden, um zu steuern, welche Versionen von Paketen zur Installation ausgewählt werden.
Es könnten mehrere Versionen eines Pakets zur Installation verfügbar sein, wenn die Datei sources.list(5) Bezüge zu mehr als einer Distribution enthält (zum Beispiel stable und testing). APT weist jeder verfügbaren Version eine Priorität zu. Unter Berücksichtigung von Abhängigkeitsbedingungen wählt apt-get die Version mit der höchsten Priorität zur Installation aus. Die APT-Einstellungen setzen die Prioritäten außer Kraft, die APT den Paketversionen standardmäßig zuweist, was dem Benutzer die Kontrolle darüber gibt, welche zur Installation ausgewählt wird.
Es könnten mehrere Instanzen der gleichen Version eines Paketes verfügbar sein, wenn die Datei sources.list(5) Bezüge zu mehr als einer Quelle enthält. In diesem Fall lädt apt-get die Instanz herunter, die in der Datei sources.list(5) als erstes aufgelistet ist. Die APT-Einstellungsdatei beeinflusst die Wahl der Instanz nicht, nur die Wahl der Version.
Eigenschaften sind in der Hand eines Systemadministrator ein große Stärke, können aber auch sein größter Albtraum werden, wenn sie unvorsichtig benutzt werden. APT wird die Eigenschaften nicht in Frage stellen, so dass deshalb falsche Einstellungen zu nicht installierbaren Paketen oder falschen Entscheidungen während des Upgrades führen können. Sogar noch mehr Probleme treten auf, wenn mehrere Distributions-Releases ohne gutes Verständnis der folgenden Absätze gemischt werden. Pakete, die in einem speziellen Release enthalten sind, sind nicht in älteren und neueren Releases oder zusammen mit Paketen unterschiedlicher Releases getestet und funktionieren daher nicht immer wie erwartet. Sind wurden gewarnt.
Beachten Sie, dass die Dateien im Verzeichnis /etc/apt/preferences.d in alphanumerisch aufsteigender Reihenfolge ausgewertet werden und der folgenden Namenskonvention unterliegen: Die Dateien haben entweder keine oder »pref« als Dateierweiterung und sie enthalten nur alphanumerische Zeichen, Bindestriche (-), Unterstriche (_) oder Punkte (.). Andernfalls wird APT einen Hinweis ausgeben, dass es eine Datei ignoriert hat, falls die Datei nicht auf ein Muster in der Konfigurationsliste Dir::Ignore-Files-Silently passt - in diesem Fall wird sie stillschweigend ignoriert.
Wenn es keine Einstellungsdatei gibt oder es in der Datei keinen Eintrag gibt, der sich auf eine bestimmte Version bezieht, dann ist die dieser Version zugewiesene Priorität, die Priorität der Distribution zu der die Version gehört. Es ist möglich, eine Distribution auszuzeichnen, »das Ziel-Release«, die eine höhere Priorität erhält, als dies bei anderen Distributionen standardmäßig der Fall ist. Das Ziel-Release kann auf der apt-get-Befehlszeile oder in der APT-Konfigurationsdatei /etc/apt/apt.conf gesetzt werden. Beachten Sie, dass dies Vorrang vor einer allgemeinen Priorität hat, die Sie, wie später beschrieben, in der Datei /etc/apt/preferences setzen, aber nicht vor bestimmten mit Pinning festgehaltenen Paketen. Beispielsweise
apt-get install -t testing irgendein_Paket
APT::Default-Release "stable";
Wenn das Ziel-Release angegeben wurde, dann benutzt APT den folgenden Algorithmus, um die Prioritäten der Versionen eines Paketes zu setzen. Zuweisung:
Priorität 1
Priorität 100
Priorität 500
Priorität 990
Wenn das Ziel-Release nicht angegeben wurde, dann weist APT einfach allen installierten Paketversionen eine Priorität von 100 und allen nicht installierten Paketversionen eine Priorität von 500 zu, außer wenn Versionen aus Archiven kommen, die in deren Release-Dateien mit »NotAutomatic: yes« markiert sind - diese Versionen erhalten die Priorität 1 oder die Priorität 100, falls sie zusätzlich als »ButAutomaticUpgrades: yes« markiert sind.
APT wendet dann die folgenden Regeln an, aufgelistet in der Reihenfolge ihres Vorrangs, um zu bestimmen, in welcher Version das Paket zu installieren ist.
In einer typischen Situation ist die Version eines Paketes (Priorität 100) nicht so aktuell, wie eine der verfügbaren Versionen, die in den Quellen in der Datei sources.list(5) aufgeführt sind (Priorität 500 oder 990). Dann wird ein Upgrade des Pakets durchgeführt, wenn apt-get install irgendein_Paket oder apt-get upgrade ausgeführt wird.
Seltener ist die installierte Version eines Pakets neuer als jede andere der verfügbaren Versionen. Für das Paket wird kein Downgrade durchgeführt, wenn apt-get install irgendein_Paket oder apt-get upgrade ausgeführt wird.
Manchmal ist die installierte Version eines Pakets aktueller, als die Version, die zum Ziel-Release gehört, aber nicht so aktuell, wie eine Version, die zu einer anderen Distribution gehört. Für ein derartiges Paket wird tatsächlich ein Upgrade durchgeführt, wenn apt-get install irgendein_Paket oder apt-get upgrade ausgeführt wird, weil mindestens eine der verfügbaren Versionen eine höhere Priorität als die installierte Version hat.
APT understands a field called Phased-Update-Percentage which can be used to control the rollout of a new version. It is an integer between 0 and 100.
A system's eligibility to a phased update is determined by seeding random number generator with the package source name, the version number, and /etc/machine-id, and then calculating an integer in the range [0, 100]. If this integer is larger than the Phased-Update-Percentage, the version is pinned to 1, and thus held back. Otherwise, normal policy rules apply.
In case you have multiple systems that you want to receive the same set of updates, you can set APT::Machine-ID to a UUID such that they all phase the same, or set APT::Get::Never-Include-Phased-Updates or APT::Get::Always-Include-Phased-Updates to true such that APT will never/always consider phased updates.
Die APT-Einstellungsdatei erlaubt dem Systemverwalter die Zuweisung von Prioritäten zu steuern. Die Datei besteht aus einem oder mehreren mehrzeiligen Datensätzen, die durch leere Zeilen getrennt sind. Datensätze können eine von zwei Gestalten haben, eine spezielle Gestalt oder eine allgemeine Gestalt.
Package: perl Pin: version 5.20* Pin-Priority: 1001
Dieser Eintrag in allgemeiner Form in der APT-Einstellungsdatei gilt nur für Gruppen von Paketen. Der folgende Eintrag weist zum Beispiel allen Paketversionen mit lokalem Ursprung eine hohe Priorität zu.
Package: * Pin: origin "" Pin-Priority: 999
Eine Mahnung zur Vorsicht: Das hier benutzte Schlüsselwort ist »origin«, was zum Abgleich mit einem Rechnernamen benutzt werden kann. Der folgende Eintrag wird allen Versionen eine hohe Priorität zuweisen, die auf dem Server verfügbar sind, der durch den Rechnernamen »ftp.de.debian.org« identifiziert wird.
Package: * Pin: origin "ftp.de.debian.org" Pin-Priority: 999
Dies sollte nicht mit der Herkunft einer Distribution verwechselt werden, wie sie in einer Release-Datei angegeben wurde. Was dem »Origin:«-Kennzeichen in einer Release-Datei folgt, ist keine Internet-Adresse, sondern ein Autoren- oder Anbietername, wie »Debian« oder »Ximian«.
Der folgende Datensatz weist allen Paketversionen, die zu Distributionen gehören, deren Archivname »unstable« ist, eine niedrige Priorität zu.
Package: * Pin: release a=unstable Pin-Priority: 50
Der folgende Datensatz weist allen Paketversionen, die zu einer Distribution gehören, deren Codename »bookworm« ist, eine hohe Priorität zu.
Package: * Pin: release n=bookworm Pin-Priority: 900
Der folgende Datensatz weist allen Paketversionen, die zu einer Distribution gehören, deren Archivname »stable« und deren Release-Nummer »11« ist, eine hohe Priorität zu.
Package: * Pin: release a=stable, v=11 Pin-Priority: 500
Die Auswirkungen des trennenden Kommas ist einem »und« in der Logik ähnlich: Alle Bedingungen müssen erfüllt werden, dass die Pin passt. Es gibt jedoch eine Ausnahme: Bei jedem Bedingungstyp (wie zwei »a«-Bedingungen) wird nur die letzte Bedingungen geprüft.
APT unterstützt außerdem Pinning mittels glob(7)-Ausdrücken und regulären Ausdrücken, die von »/« umschlossen sind. Das folgende Beispiel weist beispielsweise allen Paketen aus Experimental die Priorität 500 zu, bei denen der Name mit »gnome« beginnt (wie ein glob(7)-artiger Ausdruck) oder das Wort »kde« enthält (wie ein erweiterter regulärer POSIX-Ausdruck, der von Schrägstrichen umschlossen wird).
Package: gnome* /kde/ Pin: release a=experimental Pin-Priority: 500
Die Regel für diese Ausdrücke ist, dass sie überall dort auftreten können, wo eine Zeichenkette auftreten kann. Somit weist die folgende Pin allen Paketen von einem Release seit hirsute die Priorität 900 zu.
Package: * Pin: release n=hirsute* Pin-Priority: 990
Falls ein regulärer Ausdruck in einem Package-Feld vorkommt, ist das Verhalten dasselbe, als wenn der reguläre Ausdruck durch eine Liste aller Paketnamen ersetzt würde, auf die er passt. Es ist noch nicht entschieden, wie sich dies in Zukunft ändern wird, daher sollten Sie immer zuerst Platzhalter-Pins auflisten, so dass sie später spezielle Pins außer Kraft setzen können. Das Muster »*« in einem »Package«-Feld wird selbst nicht als ein glob(7)-Ausdruck angesehen.
APT unterstützt Pinning nach Quellpaketen. Um Pinning nach Quellpaket durchzuführen, stellen Sie dem Paketnamen »src:« voran.
Um zum Beispiel ein Pinning für alle von einem Apt-Quellpaket dieser APT-Version erzeugten Programme auf 990 durchzuführen, können Sie Folgendes tun:
Package: src:apt Pin: version 2.1.20 Pin-Priority: 990
Quellpaket-Pinning kann mit regulären Ausdrücken und Glob-Mustern (expandierbare Platzhalter) kombiniert werden und obendrein eine binäre Architektur annehmen.
Lassen Sie uns zum Beispiel ein Pinning aller Programme für alle Architekturen, die durch ein Quellpaket erzeugt wurden, das »apt« in seinem Namen enthält, auf 990 durchführen:
Package: src:*apt*:any Pin: version * Pin-Priority: 990
Die in der APT-Einstellungsdatei zugewiesenen Prioritäten (P) müssen positive oder negative Ganzzahlen sein. Sie werden wie folgt interpretiert (grob gesagt):
P >= 1000
990 <= P < 1000
500 <= P < 990
100 <= P < 500
0 < P < 100
P < 0
P = 0
Der erste Datensatz mit speziellem Format der zu einer verfügbaren Paketversion passt, legt die Priorität der Paketversion fest. Schlägt dies fehl, wird die Priorität als Maximum aller Prioritäten der Datensätze mit generischem Format definiert, die zu einer verfügbaren Version passen. Datensätze, die so definiert sind, dass sie andere Muster als »*« im Feld Pin verwenden, werden wie Datensätze mit speziellem Format betrachtet.
Nehmen wir zum Beispiel an, die APT-Einstellungsdatei enthält die drei bereits gezeigten Datensätze:
Package: perl Pin: version 5.20* Pin-Priority: 1001 Package: * Pin: origin "" Pin-Priority: 999 Package: * Pin: release unstable Pin-Priority: 50
Dann:
Die in der sources.list(5)-Datei aufgelisteten Orte sollten Packages- und Release-Dateien bereitstellen, um die an diesem Ort verfügbaren Pakete zu beschreiben.
Die Packages-Datei wird normalerweise im Verzeichnis .../dists/Distributions-Name/Bestandteil/Architektur gefunden, zum Beispiel .../dists/stable/main/binary-i386/Packages. Sie besteht aus einer Serie mehrzeiliger Datensätze, einem für jedes verfügbare Paket in diesem Verzeichnis. In jedem Datensatz sind nur zwei Zeilen zum Setzen der APT-Prioritäten relevant:
die Package:-Zeile
die Version:-Zeile
Die Release-Datei ist normalerweise im Verzeichnis .../dists/Distributionsname zu finden, zum Beispiel .../dists/stable/Release oder .../dists/bullseye/Release. Sie besteht aus einem einzelnen mehrzeiligen Datensatz, der auf alle Pakete im Verzeichnisbaum unterhalb des übergeordneten Verzeichnisses zutrifft. Anders als die Packages-Datei sind nahezu alle Zeilen in einer Release-Datei für das Setzen von APT-Prioritäten relevant:
die Archive:- oder Suite:-Zeile
Pin: release a=stable
die Codename:-Zeile
Pin: release n=bookworm
die Version:-Zeile
Pin: release v=11 Pin: release a=stable, v=11 Pin: release 11
die Component:-Zeile
Pin: release c=main
die Origin:-Zeile
Pin: release o=Debian
die Label:-Zeile
Pin: release l=Debian
Alle Packages- und Release-Dateien, die von Orten heruntergeladen werden, die in der Datei sources.list(5) aufgelistet sind, werden im Verzeichnis /var/lib/apt/lists oder in der von der Variablen Dir::State::Lists in der Datei apt.conf benannten Datei gespeichert. Die Datei debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release enthält zum Beispiel die Release-Datei, die von der Site debian.lcs.mit.edu für die binary-i386-Architekturdateien von der contrib-Bestandteil der unstable-Distribution heruntergeladen wurde.
Optional kann jeder Datensatz in der APT-Einstellungsdatei mit einer oder mehreren Zeilen beginnen, die mit dem Wort Explanation: anfangen. Dieses stellt einen Platz für Kommentare bereit.
Die folgende APT-Einstellungsdatei wird APT veranlassen, allen Paketversionen eine höhere Priorität als die Vorgabe (500) zu geben, die zu einer stable-Distribution gehören und eine ungeheuer niedrige Priorität zu Paketversionen, die zu anderen Debian-Distributionen gehören.
Explanation: Deinstallieren oder nicht installieren von anderen von Debian Explanation: stammenden Paketversionen als denen der Stable-Distribution Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release o=Debian Pin-Priority: -10
Mit einer geeigneten sources.list(5)-Datei und der obigen Einstellungsdatei wird jeder der folgenden Befehle APT veranlassen, ein Upgrade auf die neuste(n) stable-Version(en) durchzuführen.
apt-get install Paketname apt-get upgrade apt-get dist-upgrade
Der folgende Befehl wird APT veranlassen, ein Upgrade des angegebenen Pakets auf die neuste Version der testing-Distribution durchzuführen. Von dem Paket wird kein weiteres Upgrade durchgeführt, außer wenn dieser Befehl wieder angegeben wird.
apt-get install Paket/testing
Die folgende APT-Einstellungsdatei wird APT veranlassen, Paketversionen der testing-Distribution eine hohe Priorität, Paketversionen der unstable-Distribution eine niedrigere Priorität und eine ungeheuer niedrige Priorität zu Paketversionen von anderen Debian-Distributionen zuzuweisen.
Package: * Pin: release a=testing Pin-Priority: 900 Package: * Pin: release a=unstable Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10
Mit einer geeigneten sources.list(5)-Datei und der obigen Einstellungsdatei wird jeder der folgenden Befehle APT veranlassen, ein Upgrade auf die neuste(n) testing-Version(en) durchzuführen.
apt-get install Paketname apt-get upgrade apt-get dist-upgrade
Der folgende Befehl wird APT veranlassen, ein Upgrade des angegebenen Pakets auf die neuste Version der unstable-Distribution durchzuführen. Danach wird apt-get upgrade ein Upgrade des Pakets auf die aktuellste testing-Version durchführen, falls diese aktueller als die installierte Version ist, andernfalls auf die aktuellste unstable-Version, wenn diese aktueller als die installierte Version ist.
apt-get install Paket/unstable
Die folgende APT-Einstellungsdatei wird APT veranlassen, allen Paketen, die zu einem bestimmten Codenamen einer Distribution gehören, eine höhere Priorität als die Vorgabe (500) zu geben und Paketversionen, die zu anderen Debian-Distributionen, Codenamen und Archiven gehören, eine ungeheuer niedrige Priorität zu geben. Beachten Sie, dass APT mit diesen APT-Einstellungen der Migration eines Releases vom Archiv testing zu stable und später zu oldstable folgen wird. Wenn Sie zum Beispiel dem Fortschritt in testing folgen möchten, obwohl der Codename sich ändert, sollten Sie die Beispielkonfigurationen oberhalb benutzen.
Explanation: Deinstallieren oder nicht installieren von anderen von Debian Explanation: stammenden Paketversionen als denen der bookworm- Explanation: oder Sid-Distribution Package: * Pin: release n=bookworm Pin-Priority: 900 Explanation: Debian-Unstable hat immer den Codenamen sid Package: * Pin: release a=sid Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10
Mit einer geeigneten sources.list(5)-Datei und der obigen Einstellungsdatei wird jeder der folgenden Befehle APT veranlassen, ein Upgrade auf die letzte(n) Version(en) im Release mit Codenamen bookworm durchzuführen.
apt-get install Paketname apt-get upgrade apt-get dist-upgrade
Der folgende Befehl wird APT veranlassen, ein Upgrade des angegebenen Pakets auf die neuste Version der sid-Distribution durchzuführen. Danach wird apt-get upgrade ein Upgrade des Pakets auf die aktuellste bookworm-Version durchführen, wenn diese aktueller als die installierte Version ist, andernfalls auf die aktuellste sid-Version, wenn diese aktueller als die installierte Version ist.
apt-get install Paket/sid
/etc/apt/preferences
/etc/apt/preferences.d/
apt-get(8) apt-cache(8) apt.conf(5) sources.list(5)
m[blue]APT-Fehlerseitem[][1]. Wenn Sie einen Fehler in APT berichten möchten, lesen Sie bitte /usr/share/doc/debian/bug-reporting.txt oder den reportbug(1)-Befehl. Verfassen Sie Fehlerberichte bitte auf Englisch.
Die deutsche Übersetzung wurde 2009 von Chris Leick <c.leick@vollbio.de> in Zusammenarbeit mit dem deutschen l10n-Team von Debian <debian-l10n-german@lists.debian.org> angefertigt.
Beachten Sie, dass diese Übersetzung Teile enthalten kann, die nicht übersetzt wurden. Dies ist so, damit kein Inhalt verloren geht, wenn die Übersetzung hinter dem Originalinhalt hinterherhängt.
APT-Team