APT/Pinning: Unterschied zwischen den Versionen

Aus Foxwiki
K Dirkwagner verschob die Seite Apt:pinning nach Apt/pinning, ohne dabei eine Weiterleitung anzulegen: Textersetzung - „Apt:“ durch „Apt/“
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
'''Apt-Pinning''' ist eine Möglichkeit bestimmte Paketquellen bevorzugt zu behandeln
'''Apt-Pinning''' ist eine Möglichkeit bestimmte Paketquellen bevorzugt zu behandeln


= Beschreibung =
== Beschreibung ==
* So kann man z.B. bei einer LTS-Version bleiben, aber gezielt Pakete von einer neueren Version oder einer anderen inoffiziellen Quelle beziehen.  
* So kann man z.B. bei einer LTS-Version bleiben, aber gezielt Pakete von einer neueren Version oder einer anderen inoffiziellen Quelle beziehen.
* Oder man kann an einem Paket in einer bestimmten Version festhalten und somit dessen Aktualisierung oder Deinstallation verhindern.
* Oder man kann an einem Paket in einer bestimmten Version festhalten und somit dessen Aktualisierung oder Deinstallation verhindern.
* Das Pinning erfolgte früher traditionell in der Datei '''/etc/apt/preferences'''.  
* Das Pinning erfolgte früher traditionell in der Datei '''/etc/apt/preferences'''.
* Seit Ubuntu 10.04 sollte man den Ordner '''/etc/apt/preferences.d/''' nutzen, in dem man eine neue Datei mit einem beliebigen Namen anlegt.  
* Seit Ubuntu 10.04 sollte man den Ordner '''/etc/apt/preferences.d/''' nutzen, in dem man eine neue Datei mit einem beliebigen Namen anlegt.
* Idealerweise enthält der Dateiname dann einen Hinweis auf die jeweilige Paketquelle.  
* Idealerweise enthält der Dateiname dann einen Hinweis auf die jeweilige Paketquelle.
* Diese Datei darf entweder die Dateiendung '''.pref''' oder aber keine Endung besitzen (z.B. '''xenial.pin''' würde ignoriert werden).
* Diese Datei darf entweder die Dateiendung '''.pref''' oder aber keine Endung besitzen (z.B. '''xenial.pin''' würde ignoriert werden).
* Unabhängig vom Speicherort muss das Anlegen und die Bearbeitung mit einem Editor [https://wiki.ubuntuusers.de/Apt-Pinning/#source-1 [1]] mit [https://wiki.ubuntuusers.de/sudo/ Root-Rechten] [https://wiki.ubuntuusers.de/Apt-Pinning/#source-2 [2]] erfolgen.  
* Unabhängig vom Speicherort muss das Anlegen und die Bearbeitung mit einem Editor [https://wiki.ubuntuusers.de/Apt-Pinning/#source-1 [1]] mit [https://wiki.ubuntuusers.de/sudo/ Root-Rechten] [https://wiki.ubuntuusers.de/Apt-Pinning/#source-2 [2]] erfolgen.
* Im weiteren Verlauf folgen verschiedene Beispiele, wie man die jeweiligen Package-Informationen des gewünschten Pakets formuliert.
* Im weiteren Verlauf folgen verschiedene Beispiele, wie man die jeweiligen Package-Informationen des gewünschten Pakets formuliert.


= Regeln =
== Installation ==
== Syntax ==
=== Optionen ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
== Anwendungen ==
=== Fehlerbehebung ===
== Konfiguration ==
=== Dateien ===
== Sicherheit ==
== Siehe auch ==
=== Unterseiten ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
=== Dokumentation ===
==== RFC ====
==== Man-Pages ====
==== Info-Pages ====
=== Links ===
==== Einzelnachweise ====
<references />
==== Projekt ====
==== Weblinks ====
 
== Testfragen ==
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>
 
= TMP =
 
== Regeln ==
'''BEISPIEL'''
'''BEISPIEL'''


Zeile 21: Zeile 69:
  deb http://peters-ubuntupakete.example.org/ubuntu/ xenial main restricted universe multiverse
  deb http://peters-ubuntupakete.example.org/ubuntu/ xenial main restricted universe multiverse


== Pinning per Release ==
=== Pinning per Release ===
  '''Hinweis'''
  '''Hinweis'''
  Grundsätzlich definiert eine Leerzeile einen neuen Abschnitt für einen weiteren Eintrag. Leerzeilen zwischen <tt>Package</tt>, <tt>Pin</tt> und <tt>Pin-Priority</tt> sind nicht erlaubt!  
  Grundsätzlich definiert eine Leerzeile einen neuen Abschnitt für einen weiteren Eintrag. Leerzeilen zwischen <tt>Package</tt>, <tt>Pin</tt> und <tt>Pin-Priority</tt> sind nicht erlaubt!


'''Beispiel'''
'''Beispiel'''
Zeile 32: Zeile 80:
  Pin-Priority: 1000
  Pin-Priority: 1000


* Von nun an haben alle Pakete aus offiziellen Paketquellen für die Version [https://wiki.ubuntuusers.de/16.04/ 16.04] und dem Distributionsnamen (Label) <tt>Ubuntu</tt> Vorrang, selbst wenn es in anderen Quellen neuere Pakete gibt.  
* Von nun an haben alle Pakete aus offiziellen Paketquellen für die Version [https://wiki.ubuntuusers.de/16.04/ 16.04] und dem Distributionsnamen (Label) <tt>Ubuntu</tt> Vorrang, selbst wenn es in anderen Quellen neuere Pakete gibt.
* Eine Formulierung wie <tt>Pin: release a=xenial</tt> hätte nicht ausgereicht, da es ja auch Paketquellen von Ubuntu 16.04 gibt, die <tt>xenial-security</tt>, <tt>xenial-updates</tt> etc. heißen.  
* Eine Formulierung wie <tt>Pin: release a=xenial</tt> hätte nicht ausgereicht, da es ja auch Paketquellen von Ubuntu 16.04 gibt, die <tt>xenial-security</tt>, <tt>xenial-updates</tt> etc. heißen.
* Erst wenn es Pakete dort nicht gibt, werden diese (soweit verfügbar) aus anderen Quellen installiert.  
* Erst wenn es Pakete dort nicht gibt, werden diese (soweit verfügbar) aus anderen Quellen installiert.
* Die verschiedenen Parameter für <tt>Pin: release</tt> werden im Abschnitt [https://wiki.ubuntuusers.de/Apt-Pinning/#Parameter-fuer-Pinning-per-Release Parameter für Pinning per Release] weiter unten erläutert.
* Die verschiedenen Parameter für <tt>Pin: release</tt> werden im Abschnitt [https://wiki.ubuntuusers.de/Apt-Pinning/#Parameter-fuer-Pinning-per-Release Parameter für Pinning per Release] weiter unten erläutert.


== Pinning nach Ursprung ==
=== Pinning nach Ursprung ===
'''Beispiel'''
'''Beispiel'''


Zeile 45: Zeile 93:
  Pin-Priority: 300
  Pin-Priority: 300


* Dieser Fall setzt die Priorität für eine bestimmte Internetadresse (<tt>origin</tt>).  
* Dieser Fall setzt die Priorität für eine bestimmte Internetadresse (<tt>origin</tt>).
* Die genaue Bedeutung der <tt>Pin-Priority</tt> wird im Abschnitt [https://wiki.ubuntuusers.de/Apt-Pinning/#Werte-fuer-Pin-Priority Werte für Pin-Priority] weiter unten erläutert.
* Die genaue Bedeutung der <tt>Pin-Priority</tt> wird im Abschnitt [https://wiki.ubuntuusers.de/Apt-Pinning/#Werte-fuer-Pin-Priority Werte für Pin-Priority] weiter unten erläutert.


== Pinning per Version ==
=== Pinning per Version ===
Der Dateiname für eine bestimmte Programmversion lautet z.B. '''/etc/apt/preferences.d/hello''':
Der Dateiname für eine bestimmte Programmversion lautet z.B. '''/etc/apt/preferences.d/hello''':
  Package: hello
  Package: hello
Zeile 56: Zeile 104:
Dieses Beispiel verhindert die Installation des Paketes '''hello''' in einer neueren Version als 2.1.1, aber auch die unbeabsichtigte „automatische“ Deinstallation aufgrund von Konflikten.
Dieses Beispiel verhindert die Installation des Paketes '''hello''' in einer neueren Version als 2.1.1, aber auch die unbeabsichtigte „automatische“ Deinstallation aufgrund von Konflikten.


== Parameter für Pinning per Release ==
=== Parameter für Pinning per Release ===
Folgende Parameter können für das Pinnen mittels <tt>release</tt> verwendet werden:* <tt>a (archive)</tt> - Der Name eines Repositories, z.B. <tt>xenial</tt> oder <tt>xenial-backports</tt>
Folgende Parameter können für das Pinnen mittels <tt>release</tt> verwendet werden:* <tt>a (archive)</tt> - Der Name eines Repositories, z.B. <tt>xenial</tt> oder <tt>xenial-backports</tt>
* <tt>c (components)</tt> - Der Bereich eines Repositories, z.B. ''universe''
* <tt>c (components)</tt> - Der Bereich eines Repositories, z.B. ''universe''
* <tt>v (version)</tt> - Version des Repositories bzw. der Veröffentlichung, z.B. <tt>16.04</tt> für xenial
* <tt>v (version)</tt> - Version des Repositories bzw. der Veröffentlichung, z.B. <tt>16.04</tt> für xenial
* <tt>o (origin)</tt> - Die "Erzeuger" des Repositories z.B. <tt>Ubuntu</tt> oder <tt>LP-PPA-eclipse-team</tt>. Nicht zu Verwechseln mit <tt>origin</tt> als Quelle (Domainname).  
* <tt>o (origin)</tt> - Die "Erzeuger" des Repositories z.B. <tt>Ubuntu</tt> oder <tt>LP-PPA-eclipse-team</tt>. Nicht zu Verwechseln mit <tt>origin</tt> als Quelle (Domainname).
* <tt>l (label)</tt> - Name der Distribution, z.B. <tt>Ubuntu</tt>
* <tt>l (label)</tt> - Name der Distribution, z.B. <tt>Ubuntu</tt>


Die genauen Werte können mittels des Befehls <tt>apt policy</tt> nachgeschlagen werden.  
Die genauen Werte können mittels des Befehls <tt>apt policy</tt> nachgeschlagen werden.


Hier ein Ausschnitt aus der Ausgabe dieses Kommandos:  
Hier ein Ausschnitt aus der Ausgabe dieses Kommandos:
   25 http://packages.medibuntu.org bionic/free Packages
   25 http://packages.medibuntu.org bionic/free Packages
     release v=18.04,o=Medibuntu,a=bionic,l=Medibuntu,c=free
     release v=18.04,o=Medibuntu,a=bionic,l=Medibuntu,c=free
Zeile 83: Zeile 131:
Die Werte aus den release-Zeilen können ganz oder teilweise zum Pinning übernommen werden.
Die Werte aus den release-Zeilen können ganz oder teilweise zum Pinning übernommen werden.


== Werte für Pin-Priority ==
=== Werte für Pin-Priority ===
Die Werte für <tt>Pin-Priority</tt> in der Datei '''/etc/apt/preferences''' müssen positive oder negative ganze Zahlen sein. Sie werden wie folgt interpretiert:* <tt>größer 999</tt>: Version wird in jedem Fall installiert, auch wenn das einen Downgrade des Paketes nach sich zieht
Die Werte für <tt>Pin-Priority</tt> in der Datei '''/etc/apt/preferences''' müssen positive oder negative ganze Zahlen sein. Sie werden wie folgt interpretiert:* <tt>größer 999</tt>: Version wird in jedem Fall installiert, auch wenn das einen Downgrade des Paketes nach sich zieht
* <tt>von 990 bis 999</tt> - Version wird installiert, auch wenn sie nicht zum Release gehört, es sei denn ein aktuelleres Pakete ist bereits installiert
* <tt>von 990 bis 999</tt> - Version wird installiert, auch wenn sie nicht zum Release gehört, es sei denn ein aktuelleres Pakete ist bereits installiert
Zeile 95: Zeile 143:
  Ausführlichere Informationen hierzu findet man in der [https://wiki.ubuntuusers.de/man/ Manpage] von <tt>apt_preferences</tt> oder im [http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.en.html#s-pin APT HOWTO]
  Ausführlichere Informationen hierzu findet man in der [https://wiki.ubuntuusers.de/man/ Manpage] von <tt>apt_preferences</tt> oder im [http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.en.html#s-pin APT HOWTO]


== Überprüfung ==
=== Überprüfung ===


Die Wirkung des Apt-Pinnings auf bestimmte Pakete kann mit folgendem Befehl überprüft werden:  
Die Wirkung des Apt-Pinnings auf bestimmte Pakete kann mit folgendem Befehl überprüft werden:
  # '''apt policy PAKET(E)'''
  # '''apt policy PAKET(E)'''


== Gezielte Umgehung mit apt-get ==
=== Gezielte Umgehung mit apt-get ===
Im Terminal [https://wiki.ubuntuusers.de/Apt-Pinning/#source-2 [2]] kann man mit [https://wiki.ubuntuusers.de/apt-get/ apt-get] gesetzte Prioritäten aber auch gezielt umgehen.  
Im Terminal [https://wiki.ubuntuusers.de/Apt-Pinning/#source-2 [2]] kann man mit [https://wiki.ubuntuusers.de/apt-get/ apt-get] gesetzte Prioritäten aber auch gezielt umgehen.


Folgender Aufruf installiert z.B. das Programm [https://wiki.ubuntuusers.de/MPlayer/ MPlayer] aus dem Paketbereich <tt>xenial</tt> (Ubuntu 16.04). Dabei werden Abhängigkeiten nach der Priorität erfüllt.
Folgender Aufruf installiert z.B. das Programm [https://wiki.ubuntuusers.de/MPlayer/ MPlayer] aus dem Paketbereich <tt>xenial</tt> (Ubuntu 16.04). Dabei werden Abhängigkeiten nach der Priorität erfüllt.
  # '''apt-get -t xenial install mplayer-custom'''
  # '''apt-get -t xenial install mplayer-custom'''


=== apt-mark - Aktuelle Version behalten ===
==== apt-mark - Aktuelle Version behalten ====
  # '''apt-mark hold firefox '''
  # '''apt-mark hold firefox '''


Dieser Befehl setzt die aktuell installierte Firefox Version auf "Halten", ist also identisch mit dem Pin auf die aktuelle Version. Um das automatische updaten wieder zu erlauben gibt man den folgenden Befehl ein:  
Dieser Befehl setzt die aktuell installierte Firefox Version auf "Halten", ist also identisch mit dem Pin auf die aktuelle Version. Um das automatische updaten wieder zu erlauben gibt man den folgenden Befehl ein:
  sudo apt-mark unhold firefox  
  sudo apt-mark unhold firefox


== Beispiele ==
=== Beispiele ===
=== Von proposed-Quellen downgraden ===
==== Von proposed-Quellen downgraden ====
* Mit Pinning gibt es eine vergleichsweise einfache Möglichkeit, ungewollte Upgrades auf Pakete aus den <tt>proposed</tt>-Quellen rückgängig zu machen, sprich auf die herkömmlichen und i.d.R. gut getesteten Pakete bzgl. Installationsroutine und Systemintegration downzugraden.  
* Mit Pinning gibt es eine vergleichsweise einfache Möglichkeit, ungewollte Upgrades auf Pakete aus den <tt>proposed</tt>-Quellen rückgängig zu machen, sprich auf die herkömmlichen und i.d.R. gut getesteten Pakete bzgl. Installationsroutine und Systemintegration downzugraden.
* Zuerst deaktiviert man die <tt>proposed</tt>-Quellen [https://wiki.ubuntuusers.de/Apt-Pinning/#source-3 [3]] und aktualisiert die Paketindexdateien.  
* Zuerst deaktiviert man die <tt>proposed</tt>-Quellen [https://wiki.ubuntuusers.de/Apt-Pinning/#source-3 [3]] und aktualisiert die Paketindexdateien.
Dann legt man die Datei '''/etc/apt/preferences/no-proposed''' an:
Dann legt man die Datei '''/etc/apt/preferences/no-proposed''' an:
  Package: *
  Package: *
Zeile 121: Zeile 169:
  Pin-Priority: 1001
  Pin-Priority: 1001


* Dabei ist <tt>ARCHIV</tt> durch den Codenamen der jeweiligen Ubuntu-Version zu ersetzen.  
* Dabei ist <tt>ARCHIV</tt> durch den Codenamen der jeweiligen Ubuntu-Version zu ersetzen.
* Codenamen sind beispielsweise <tt>trusty</tt>, <tt>xenial</tt> usw.  
* Codenamen sind beispielsweise <tt>trusty</tt>, <tt>xenial</tt> usw.
* Nach dem Codenamen sollte ein Stern <tt>*</tt> gesetzt werden, damit auch Pakete aus den Quellen <tt>ARCHIV-updates</tt> und <tt>ARCHIV-security</tt> berücksichtigt werden.
* Nach dem Codenamen sollte ein Stern <tt>*</tt> gesetzt werden, damit auch Pakete aus den Quellen <tt>ARCHIV-updates</tt> und <tt>ARCHIV-security</tt> berücksichtigt werden.


Zeile 130: Zeile 178:
Nachdem die Paketversionen korrigiert wurden, sollte die Pinning-Datei wieder entfernt werden, damit irgendwann in Zukunft ein [https://wiki.ubuntuusers.de/Upgrade/ Upgrade] auf eine neuere Ubuntu-Version ohne Probleme möglich ist.
Nachdem die Paketversionen korrigiert wurden, sollte die Pinning-Datei wieder entfernt werden, damit irgendwann in Zukunft ein [https://wiki.ubuntuusers.de/Upgrade/ Upgrade] auf eine neuere Ubuntu-Version ohne Probleme möglich ist.


== Einzelne Pakete aus älterer/neuerer Ubuntu-Version installieren ==
=== Einzelne Pakete aus älterer/neuerer Ubuntu-Version installieren ===
* Mitunter möchte man eine aktuellere Version eines Pakets aus der nächsten Ubuntu-Version nutzen, ist aber nicht bereit, ein komplettes Upgrade zu machen.  
* Mitunter möchte man eine aktuellere Version eines Pakets aus der nächsten Ubuntu-Version nutzen, ist aber nicht bereit, ein komplettes Upgrade zu machen.
* Oder aber man hat ein Upgrade hinter sich, die neue Version eines Programms macht jedoch Probleme und man würde lieber für dieses eine Paket zur früheren Version zurückkehren.  
* Oder aber man hat ein Upgrade hinter sich, die neue Version eines Programms macht jedoch Probleme und man würde lieber für dieses eine Paket zur früheren Version zurückkehren.
* Die Methode mit Apt-Pinning entspricht im Prinzip dem manuellen Herunterladen und Installieren der entsprechenden Pakete von <tt>http://packages.ubuntu.com</tt>, ist aber deutlich bequemer, besonders wenn verschiedene Abhängigkeiten ebenfalls einen Up- bzw. Downgrade erfordern.
* Die Methode mit Apt-Pinning entspricht im Prinzip dem manuellen Herunterladen und Installieren der entsprechenden Pakete von <tt>http://packages.ubuntu.com</tt>, ist aber deutlich bequemer, besonders wenn verschiedene Abhängigkeiten ebenfalls einen Up- bzw. Downgrade erfordern.


  '''Achtung'''
  '''Achtung'''
  Die Verwendung von Paketen aus anderen Ubuntu-Versionen kann im Einzelfall eine pragmatische Lösung sein, in der Regel ist aber davon abzuraten. Besonders bei einer großen Zahl an Abhängigkeiten sind Probleme vorprogrammiert.  
  Die Verwendung von Paketen aus anderen Ubuntu-Versionen kann im Einzelfall eine pragmatische Lösung sein, in der Regel ist aber davon abzuraten. Besonders bei einer großen Zahl an Abhängigkeiten sind Probleme vorprogrammiert.


'''Beispiel'''
'''Beispiel'''


Das Paket '''subversion''' (siehe [https://wiki.ubuntuusers.de/SVN/ SVN]) liegt für [https://wiki.ubuntuusers.de/Xenial/ Ubuntu 16.04] (<tt>xenial</tt>) in der Version 1.6.17 und für [https://wiki.ubuntuusers.de/Zesty/ Ubuntu 17.04.10] (<tt>zesty</tt>) in der Version 1.7.5 vor.  
Das Paket '''subversion''' (siehe [https://wiki.ubuntuusers.de/SVN/ SVN]) liegt für [https://wiki.ubuntuusers.de/Xenial/ Ubuntu 16.04] (<tt>xenial</tt>) in der Version 1.6.17 und für [https://wiki.ubuntuusers.de/Zesty/ Ubuntu 17.04.10] (<tt>zesty</tt>) in der Version 1.7.5 vor.


Nach einem Upgrade auf Ubuntu 17.04 möchte man zur Version 1.6 des Pakets zurückkehren.  
Nach einem Upgrade auf Ubuntu 17.04 möchte man zur Version 1.6 des Pakets zurückkehren.


Dazu fügt man den [https://wiki.ubuntuusers.de/sources.list/ Paketquellen] folgende Zeile hinzu [https://wiki.ubuntuusers.de/Apt-Pinning/#source-3 [3]]:
Dazu fügt man den [https://wiki.ubuntuusers.de/sources.list/ Paketquellen] folgende Zeile hinzu [https://wiki.ubuntuusers.de/Apt-Pinning/#source-3 [3]]:
Zeile 154: Zeile 202:
  Pin: version 1.6*
  Pin: version 1.6*
  Pin-Priority: 1001
  Pin-Priority: 1001
 
  Package: *
  Package: *
  Pin: release v=16.04, l=Ubuntu
  Pin: release v=16.04, l=Ubuntu
  Pin-Priority: -1
  Pin-Priority: -1


* Nun kann nach Aktualisieren der Paketlisten mit [https://wiki.ubuntuusers.de/apt/apt-get/#apt-get-update apt-get update] das Paket '''subversion''' aus den Quellen von Ubuntu 16.04 installiert werden [https://wiki.ubuntuusers.de/Apt-Pinning/#source-4 [4]].  
* Nun kann nach Aktualisieren der Paketlisten mit [https://wiki.ubuntuusers.de/apt/apt-get/#apt-get-update apt-get update] das Paket '''subversion''' aus den Quellen von Ubuntu 16.04 installiert werden [https://wiki.ubuntuusers.de/Apt-Pinning/#source-4 [4]].
* Wurde es bereits installiert, wird mit [https://wiki.ubuntuusers.de/apt/apt-get/#apt-get-dist-upgrade apt-get dist-upgrade] automatisch die ältere Version installiert.
* Wurde es bereits installiert, wird mit [https://wiki.ubuntuusers.de/apt/apt-get/#apt-get-dist-upgrade apt-get dist-upgrade] automatisch die ältere Version installiert.
* Unter Umständen müssen je nach Komplexität der Abhängigkeiten noch weitere Pinning-Einträge hinzugefügt werden.
* Unter Umständen müssen je nach Komplexität der Abhängigkeiten noch weitere Pinning-Einträge hinzugefügt werden.


== Einzelne Pakete aus einem Sammel-PPA installieren ==
=== Einzelne Pakete aus einem Sammel-PPA installieren ===
* Bei der Verwendung eines [https://wiki.ubuntuusers.de/Paketquellen_freischalten/PPA/ Personal Packages Archiv] (PPA) tritt immer wieder das Problem auf, dass nach dem Einbinden und Aktualisieren nicht nur das gewünschte Programm, sondern - je nach PPA - eine ganze Reihe weiterer Programme in den Paketquellen auftaucht, die u.U. mit den Versionen aus den offiziellen Paketquellen kollidieren können.  
* Bei der Verwendung eines [https://wiki.ubuntuusers.de/Paketquellen_freischalten/PPA/ Personal Packages Archiv] (PPA) tritt immer wieder das Problem auf, dass nach dem Einbinden und Aktualisieren nicht nur das gewünschte Programm, sondern - je nach PPA - eine ganze Reihe weiterer Programme in den Paketquellen auftaucht, die u.U. mit den Versionen aus den offiziellen Paketquellen kollidieren können.
* Die Nutzung dieser Sammel-PPAs kann deutlich vereinfacht werden, in dem man nur das oder die gewünschten Pakete aus einem PPA zulässt (und allen anderen blockiert).  
* Die Nutzung dieser Sammel-PPAs kann deutlich vereinfacht werden, in dem man nur das oder die gewünschten Pakete aus einem PPA zulässt (und allen anderen blockiert).
* Zwingende Voraussetzung: das Paket hat keine speziellen Abhängigkeiten, die ebenfalls aus dem PPA stammen müssen.
* Zwingende Voraussetzung: das Paket hat keine speziellen Abhängigkeiten, die ebenfalls aus dem PPA stammen müssen.


Zeile 172: Zeile 220:
  Pin: release o=LP-PPA-LP-BENUTZER-PPA-NAME
  Pin: release o=LP-PPA-LP-BENUTZER-PPA-NAME
  Pin-Priority: -1
  Pin-Priority: -1
 
  Package: foo
  Package: foo
  Pin: release o=LP-PPA-LP-BENUTZER-PPA-NAME
  Pin: release o=LP-PPA-LP-BENUTZER-PPA-NAME
  Pin-Priority: 500
  Pin-Priority: 500
 
  Package: bar
  Package: bar
  Pin: release o=LP-PPA-LP-BENUTZER-PPA-NAME
  Pin: release o=LP-PPA-LP-BENUTZER-PPA-NAME
Zeile 183: Zeile 231:
Während der erste Abschnitt die Nutzung des PPAs praktisch untersagt, gilt dies nicht für die gewünschten Pakete '''foo''' und '''bar'''.
Während der erste Abschnitt die Nutzung des PPAs praktisch untersagt, gilt dies nicht für die gewünschten Pakete '''foo''' und '''bar'''.


== Pinning ==
=== Pinning ===
* Bevor Sie über 'Pinning' nachdenken, sollten Sie prüfen, ob das Paket bereits für ihre Version in [https://wiki.debian.org/Backports Debian Backports] bereitgestellt wurde.  
* Bevor Sie über 'Pinning' nachdenken, sollten Sie prüfen, ob das Paket bereits für ihre Version in [https://wiki.debian.org/Backports Debian Backports] bereitgestellt wurde.
* Wenn Apt-Pinning benutzt wird, müssen Sie die Kompatibilität der Pakete selbst überprüfen, da Debian dies nicht garantiert. Bedenken Sie, dass Apt-Pinning völlig optional ist und Debian schlägt dessen Verwendung nicht ohne gründliche Überlegung vor.  
* Wenn Apt-Pinning benutzt wird, müssen Sie die Kompatibilität der Pakete selbst überprüfen, da Debian dies nicht garantiert. Bedenken Sie, dass Apt-Pinning völlig optional ist und Debian schlägt dessen Verwendung nicht ohne gründliche Überlegung vor.
* ''Pinning'' erlaubt es Ihnen gewisse Pakete aus einer bestimmten Version zu verwenden (Stable, Testing, Unstable), ohne die Notwendigkeit das ganze System zu aktualisieren.  
* ''Pinning'' erlaubt es Ihnen gewisse Pakete aus einer bestimmten Version zu verwenden (Stable, Testing, Unstable), ohne die Notwendigkeit das ganze System zu aktualisieren.
* In der einfachsten Variante werden für ''Pinning'' zwei Dateien benötigt, <tt>/etc/apt/sources.list</tt> und <tt>/etc/apt/preferences</tt>.  
* In der einfachsten Variante werden für ''Pinning'' zwei Dateien benötigt, <tt>/etc/apt/sources.list</tt> und <tt>/etc/apt/preferences</tt>.
* Eine zusätzliche Rolle spielt die ''Zielveröffentlichung (Target Release)'' welche in <tt>/etc/apt/apt.conf</tt> (oder in einer Datei unterhalb <tt>/etc/apt/conf.d/...</tt> und der Apt-Kommandozeile) gesetzt werden kann.  
* Eine zusätzliche Rolle spielt die ''Zielveröffentlichung (Target Release)'' welche in <tt>/etc/apt/apt.conf</tt> (oder in einer Datei unterhalb <tt>/etc/apt/conf.d/...</tt> und der Apt-Kommandozeile) gesetzt werden kann.


=== /etc/apt/sources.list ===
==== /etc/apt/sources.list ====
  #### testing  #########
  #### testing  #########
  deb http://ftp.us.debian.org/debian testing main contrib non-free
  deb http://ftp.us.debian.org/debian testing main contrib non-free
Zeile 196: Zeile 244:
  deb http://ftp.us.debian.org/debian unstable main contrib non-free
  deb http://ftp.us.debian.org/debian unstable main contrib non-free


In diesem Beispiel laden wir von ''Testing'' und ''Unstable'' herunter. Sie können dies natürlich dahingehend abändern, dass auch aus ''Stable'' geladen wird.  
In diesem Beispiel laden wir von ''Testing'' und ''Unstable'' herunter. Sie können dies natürlich dahingehend abändern, dass auch aus ''Stable'' geladen wird.


=== /etc/apt/preferences ===
==== /etc/apt/preferences ====


Die Datei 'preferences (Einstellungen)' ist der Ort, an dem das tatsächliche 'Pinning' statt findet. Hier ist ein Beispiel:  
Die Datei 'preferences (Einstellungen)' ist der Ort, an dem das tatsächliche 'Pinning' statt findet. Hier ist ein Beispiel:


  Package: *
  Package: *
Zeile 209: Zeile 257:
  Pin-Priority: 800
  Pin-Priority: 800


'''Package''' ist hier Standard für alle Pakete, angegeben durch den Stern. '''Pin''' gibt die Veröffentlichung (Release) an (''Testing'' und ''Unstable''). '''Pin-Priority''' gibt die Priorität an. 'apt-get' hat die Voreinstellung, dass die Pakete mit höchster Priorität "gewinnen". Das obige restrukturiert diese Priorität, sodass Pakete aus ''Testing'' eine höhere Priorität bekommen.  
'''Package''' ist hier Standard für alle Pakete, angegeben durch den Stern. '''Pin''' gibt die Veröffentlichung (Release) an (''Testing'' und ''Unstable''). '''Pin-Priority''' gibt die Priorität an. 'apt-get' hat die Voreinstellung, dass die Pakete mit höchster Priorität "gewinnen". Das obige restrukturiert diese Priorität, sodass Pakete aus ''Testing'' eine höhere Priorität bekommen.


Weiteres können Sie im apt_preferences(5) Handbuch nachlesen.  
Weiteres können Sie im apt_preferences(5) Handbuch nachlesen.


=== Installation von Unstable ===
==== Installation von Unstable ====


Lassen Sie uns annehmen, dass wir ''Testing'' verwenden und wir Enlightenment aus ''Unstable'' möchten. Es gibt grundsätzlich zwei Methoden für die Installation:  
Lassen Sie uns annehmen, dass wir ''Testing'' verwenden und wir Enlightenment aus ''Unstable'' möchten. Es gibt grundsätzlich zwei Methoden für die Installation:


  # apt-get install enlightenment/unstable
  # apt-get install enlightenment/unstable
  # apt-get -t unstable install enlightenment
  # apt-get -t unstable install enlightenment


Das erste Beispiel wird nicht versuchen irgendwelche Pakete auf Ihrem System zu aktualisieren; wenn bestimmte Abhängigkeiten verletzt werden, schlägt die Installation fehl. Die zweite Methode '''wird''' versuchen, jegliche Abhängigkeiten zu aktualisieren/installieren. Bei der obigen Prozedur wird Sie 'apt-get' natürlich vor dem Fortfahren fragen.  
Das erste Beispiel wird nicht versuchen irgendwelche Pakete auf Ihrem System zu aktualisieren; wenn bestimmte Abhängigkeiten verletzt werden, schlägt die Installation fehl. Die zweite Methode '''wird''' versuchen, jegliche Abhängigkeiten zu aktualisieren/installieren. Bei der obigen Prozedur wird Sie 'apt-get' natürlich vor dem Fortfahren fragen.


=== Anmerkungen von JoshuaRodman ===
==== Anmerkungen von JoshuaRodman ====


Ich persönlich fand die übliche Konfiguration mit Testing mit höherer Priorität und Unstable mit niedrigerer Priorität problematisch. Manchmal hängen Testingpakete von Paketen ab, die momentan nicht in Testing sind (eventuell ein Beispiel für kurzzeitige Störungen), was dazu führt, dass Pakete einfach automatisch aus Unstable gezogen werden. Im Zeitraum von Testing vor der Stabilisierung für die stabile Version Woody, führte dies dazu, dass über 100 Unstable-Pakete installiert waren, ohne dass man dies wusste.  
Ich persönlich fand die übliche Konfiguration mit Testing mit höherer Priorität und Unstable mit niedrigerer Priorität problematisch. Manchmal hängen Testingpakete von Paketen ab, die momentan nicht in Testing sind (eventuell ein Beispiel für kurzzeitige Störungen), was dazu führt, dass Pakete einfach automatisch aus Unstable gezogen werden. Im Zeitraum von Testing vor der Stabilisierung für die stabile Version Woody, führte dies dazu, dass über 100 Unstable-Pakete installiert waren, ohne dass man dies wusste.


Das Resultat ist, dass ich eine konservativere "Nur wenn ich es sage"-Herangehensweise für eine gemischte Distribution verwende mit ungefähr so einer Pin-Datei:  
Das Resultat ist, dass ich eine konservativere "Nur wenn ich es sage"-Herangehensweise für eine gemischte Distribution verwende mit ungefähr so einer Pin-Datei:


   Package: *
   Package: *
Zeile 235: Zeile 283:
   Pin-Priority: -10
   Pin-Priority: -10


Daraus ergibt sich, dass alle Debianpakete standardmäßig eine Priorität von -10 haben, während Testing einen Bonus von 900 erhält. Das führt zu folgendem Verhalten:  
Daraus ergibt sich, dass alle Debianpakete standardmäßig eine Priorität von -10 haben, während Testing einen Bonus von 900 erhält. Das führt zu folgendem Verhalten:


Aus <tt>apt_preferences(5)</tt>
Aus <tt>apt_preferences(5)</tt>
Zeile 246: Zeile 294:




'''Angemerkt sei, dass eine Priorität über 1000 sogar die Installation einer älteren Version ermöglicht (Downgrade), egal welche Priorität das Paket hat. Das bedeutet, dass Sie die Priorität 1001 für eine stabile Quelle (Stable) nutzen können, wenn Sie ältere (stabile) Versionen der installierten Pakete für Ihr System wünschen (beispielsweise von Testing).''' Dies wird nicht empfohlen, außer die Anzahl der Änderungen ist gering.  
'''Angemerkt sei, dass eine Priorität über 1000 sogar die Installation einer älteren Version ermöglicht (Downgrade), egal welche Priorität das Paket hat. Das bedeutet, dass Sie die Priorität 1001 für eine stabile Quelle (Stable) nutzen können, wenn Sie ältere (stabile) Versionen der installierten Pakete für Ihr System wünschen (beispielsweise von Testing).''' Dies wird nicht empfohlen, außer die Anzahl der Änderungen ist gering.


Die Installation mittels <tt>apt-get install paketname/unstable</tt> und <tt>apt-get install -t unstable paketname</tt> werden beide weiterhin funktionieren, aber nur Pakete aus Unstable werden durch diese Kommandos installiert.  
Die Installation mittels <tt>apt-get install paketname/unstable</tt> und <tt>apt-get install -t unstable paketname</tt> werden beide weiterhin funktionieren, aber nur Pakete aus Unstable werden durch diese Kommandos installiert.


=== Anmerkungen von ZugSchlus ===
==== Anmerkungen von ZugSchlus ====


==== Keine Haftung ====
===== Keine Haftung =====


Das englischsprachige Original dieser Seite wurde von [https://wiki.debian.org/ZugSchlus ZugSchlus] geschrieben, welcher nicht einmal entfernt das Konzept von Pinning versteht. Nehmen Sie daher die Worte "wahrscheinlich", "muss bestätigt werden" und ähnliche Ausdrücke wörtlich und dokumentieren Sie Ihre Funde (mögen diese auch "diese Seite stimmt" oder "diese Seite liegt falsch", optional "diese Seite liegt falsch in Hinsicht auf ...") sein, hier.  
Das englischsprachige Original dieser Seite wurde von [https://wiki.debian.org/ZugSchlus ZugSchlus] geschrieben, welcher nicht einmal entfernt das Konzept von Pinning versteht. Nehmen Sie daher die Worte "wahrscheinlich", "muss bestätigt werden" und ähnliche Ausdrücke wörtlich und dokumentieren Sie Ihre Funde (mögen diese auch "diese Seite stimmt" oder "diese Seite liegt falsch", optional "diese Seite liegt falsch in Hinsicht auf ...") sein, hier.


Die Deutsche Übersetzung ist irreführend und verwirrend. Bitte die englische Variante lesen.  
Die Deutsche Übersetzung ist irreführend und verwirrend. Bitte die englische Variante lesen.


==== Paketauswahl ====
===== Paketauswahl =====
Dies muss überprüft werden
Dies muss überprüft werden
* Ignoriere Pakete, welche nicht das Kriterium der Version haben  
* Ignoriere Pakete, welche nicht das Kriterium der Version haben
* Ignoriere Pakete mit niedrigerer Version als die aktuelle, außer die Priorität liegt über 1000  
* Ignoriere Pakete mit niedrigerer Version als die aktuelle, außer die Priorität liegt über 1000
* Installiere das übriggebliebene Paket, welches die höchste Priorität hat  
* Installiere das übriggebliebene Paket, welches die höchste Priorität hat
* Im Falle einer Gleichheit der Prioritäten, nimm das "gepinnte" Paket  
* Im Falle einer Gleichheit der Prioritäten, nimm das "gepinnte" Paket
** Dieser Schritt sollte wahrscheinlich übersprungen werden, wenn die Auswahl auf nichts passt  
** Dieser Schritt sollte wahrscheinlich übersprungen werden, wenn die Auswahl auf nichts passt
* Im Falle ohne Vorauswahl (Pin), nehme höchstpriorisiertes Paket  
* Im Falle ohne Vorauswahl (Pin), nehme höchstpriorisiertes Paket
* In dem Fall mehrerer Pakete gleicher Version, nimmt Apt-get jenes, welches als erstes in sources.list aufgeführt ist
* In dem Fall mehrerer Pakete gleicher Version, nimmt Apt-get jenes, welches als erstes in sources.list aufgeführt ist


==== Beispiele:/etc/apt/preferences ====
===== Beispiele:/etc/apt/preferences =====
'''Beispiel 1'''
'''Beispiel 1'''


Zeile 281: Zeile 329:
  Pin-Priority: -1
  Pin-Priority: -1


[https://wiki.debian.org/ZugSchlus ZugSchlus] versucht zu erklären:  
[https://wiki.debian.org/ZugSchlus ZugSchlus] versucht zu erklären:
* Alle Pakete einer Distribution genannt Testing werden auf 900 gesetzt  
* Alle Pakete einer Distribution genannt Testing werden auf 900 gesetzt
* Alle Pakete von einer Distribution genannt Unstable werden auf 300 gesetzt  
* Alle Pakete von einer Distribution genannt Unstable werden auf 300 gesetzt
* Alle anderen Pakete von Debian bekommen die Priorität 1 und werden daher nie installiert  
* Alle anderen Pakete von Debian bekommen die Priorität 1 und werden daher nie installiert


'''Problem'''  
'''Problem'''
* Diese Beschränkung kann sich anders verhalten, abhängig von der gesetzten Zielveröffentlichung in anderen Teilen der Apt-Konfiguration.  
* Diese Beschränkung kann sich anders verhalten, abhängig von der gesetzten Zielveröffentlichung in anderen Teilen der Apt-Konfiguration.
* Daher kann dieses Beispiel nicht wirklich dokumentiert werden, ohne mehr Informationen hinzuzufügen.  
* Daher kann dieses Beispiel nicht wirklich dokumentiert werden, ohne mehr Informationen hinzuzufügen.
* Ein nicht beschränktes Paket welches ein Teil der Zielveröffentlichung hat die Standardpriorität 990, während andere nicht beschränkte Pakete lediglich eine Priorität von 500 haben.  
* Ein nicht beschränktes Paket welches ein Teil der Zielveröffentlichung hat die Standardpriorität 990, während andere nicht beschränkte Pakete lediglich eine Priorität von 500 haben.


'''Beispiel 2'''
'''Beispiel 2'''
Zeile 295: Zeile 343:
  Ziehe auf einem Unstable-System Dpatch von Experimental
  Ziehe auf einem Unstable-System Dpatch von Experimental


Eine mögliche (und nicht völlig korrekte) Lösung:  
Eine mögliche (und nicht völlig korrekte) Lösung:
* Unstable und Experimental sind in <tt>sources.list</tt>  
* Unstable und Experimental sind in <tt>sources.list</tt>
** Mit der Abwesenheit von einer expliziten Beschränkung (Pin) wird Experimental automatisch auf die Priorität 1 gesetzt. Das liegt daran, dass die Veröffentlichungsdatei von Experimental <tt>NotAutomatic: yes</tt> (nicht-automatisch: ja) enthält.  
** Mit der Abwesenheit von einer expliziten Beschränkung (Pin) wird Experimental automatisch auf die Priorität 1 gesetzt. Das liegt daran, dass die Veröffentlichungsdatei von Experimental <tt>NotAutomatic: yes</tt> (nicht-automatisch: ja) enthält.
* Priorisieren Sie die gewünschten Pakete auf einen Wert x mit 100<x<500:<br/> Package: dpatch<br/> Pin: release o=Debian,a=experimental<br/> Pin-Priority: 450
* Priorisieren Sie die gewünschten Pakete auf einen Wert x mit 100<x<500:<br/> Package: dpatch<br/> Pin: release o=Debian,a=experimental<br/> Pin-Priority: 450
** Ein Wert > 500 wird immer ein Paket aus Experimental auswählen, verhindern dass ein höher nummeriertes Paket aus Unstable installiert wird und "gar kein Paket" auswählen, bevor allen verfügbaren Paketen, wenn die Distribution, die nicht dieses Paket enthält, eine höhere Priorität besitzt.  
** Ein Wert > 500 wird immer ein Paket aus Experimental auswählen, verhindern dass ein höher nummeriertes Paket aus Unstable installiert wird und "gar kein Paket" auswählen, bevor allen verfügbaren Paketen, wenn die Distribution, die nicht dieses Paket enthält, eine höhere Priorität besitzt.
** Unglücklicherweise versteht das Paket-Feld weder Wildcards noch Regular Expressions. Sie benötigen einen Absatz pro Paket.  
** Unglücklicherweise versteht das Paket-Feld weder Wildcards noch Regular Expressions. Sie benötigen einen Absatz pro Paket.
** Wenn das Paket auf 450 gesetzt ist, wird es wohl nicht automatisch auf ein neueres Paket aus Experimental aktualisiert werden, aber es wird das Paket in experimental solange behalten, wie die Version in Unstable nicht höher ist.  
** Wenn das Paket auf 450 gesetzt ist, wird es wohl nicht automatisch auf ein neueres Paket aus Experimental aktualisiert werden, aber es wird das Paket in experimental solange behalten, wie die Version in Unstable nicht höher ist.


'''Beispiel 3'''
'''Beispiel 3'''
* Nehmen Sie an, dass Sie ein eigenes Repositorium haben, wo Sie eine persönliche Version von Postfix haben.  
* Nehmen Sie an, dass Sie ein eigenes Repositorium haben, wo Sie eine persönliche Version von Postfix haben.
* Sie wünschen von Apt, dass es Ihre Version vor offiziellen bevorzugt.  
* Sie wünschen von Apt, dass es Ihre Version vor offiziellen bevorzugt.


Sie können die Einstellungen auf "origin" (Herkunft) setzen:  
Sie können die Einstellungen auf "origin" (Herkunft) setzen:
  Package: *
  Package: *
  Pin: origin www.rktmb.org
  Pin: origin www.rktmb.org
  Pin-Priority: 610  
  Pin-Priority: 610
 
  Package: *
  Package: *
  Pin: origin ftp.fr.debian.org
  Pin: origin ftp.fr.debian.org
  Pin-Priority: 600
  Pin-Priority: 600


==== Fehlersuche ====
===== Fehlersuche =====


<tt>apt-cache policy package</tt> liefert Informationen über den Auswahlprozess. Leider ist nicht allgemein bekannt, was die Ausgabe meint. Das folgende ist ein Interpretationsversuch:  
<tt>apt-cache policy package</tt> liefert Informationen über den Auswahlprozess. Leider ist nicht allgemein bekannt, was die Ausgabe meint. Das folgende ist ein Interpretationsversuch:


  $ apt-cache policy exim4-daemon-light
  $ apt-cache policy exim4-daemon-light
Zeile 333: Zeile 381:
         500 http://mirror sarge/main Packages
         500 http://mirror sarge/main Packages


Die Priorität jeder Version/jedes Ortes ist die Nummer links davon. In diesem Fall 500, 100, 500. Es ist unklar, was die Nummer rechts von der Versionsnummer bedeutet. Einige Leute glauben, dass es lediglich die letzte Periode für das Paket ist, welche in <tt>/etc/apt/preferences</tt> für das Paket angegeben wurde, während andere glauben, es sei die tatsächliche Beschränkungspriorität des Pakets.  
Die Priorität jeder Version/jedes Ortes ist die Nummer links davon. In diesem Fall 500, 100, 500. Es ist unklar, was die Nummer rechts von der Versionsnummer bedeutet. Einige Leute glauben, dass es lediglich die letzte Periode für das Paket ist, welche in <tt>/etc/apt/preferences</tt> für das Paket angegeben wurde, während andere glauben, es sei die tatsächliche Beschränkungspriorität des Pakets.


[https://wiki.debian.org/ToDo ToDo]: Dieser Abschnitt wurde nach mehr oder weniger wissenden Annahmen geschrieben. Könnte dies jemand mit realer Kenntnis über Apt bitte nachprüfen?  
[https://wiki.debian.org/ToDo ToDo]: Dieser Abschnitt wurde nach mehr oder weniger wissenden Annahmen geschrieben. Könnte dies jemand mit realer Kenntnis über Apt bitte nachprüfen?


=== Anmerkungen ===
==== Anmerkungen ====


Wenn Sie sich aufgrund des Links [http://www.debian.org/doc/manuals/repository-howto/repository-howto http://www.debian.org/doc/manuals/repository-howto/repository-howto] fragen, was die Optionen für Veröffentlichungsdaten basierend auf obigen Link sind, so finden wir:  
Wenn Sie sich aufgrund des Links [http://www.debian.org/doc/manuals/repository-howto/repository-howto http://www.debian.org/doc/manuals/repository-howto/repository-howto] fragen, was die Optionen für Veröffentlichungsdaten basierend auf obigen Link sind, so finden wir:


Archive: ''Archiv''  
Archive: ''Archiv''


Component: ''Komponente''  
Component: ''Komponente''


Origin: ''Ihre Firma''  
Origin: ''Ihre Firma''


Label: ''Ihr firmeneigenes Debian-Repositorium''  
Label: ''Ihr firmeneigenes Debian-Repositorium''


Architecture: ''Architektur''  
Architecture: ''Architektur''


Daher würde die Zeile "Pin: release a=testing" Archivwerte in der Veröffentlichungsdatei finden, welche Testing heißt.
Daher würde die Zeile "Pin: release a=testing" Archivwerte in der Veröffentlichungsdatei finden, welche Testing heißt.


= Links =
== Links ==
* [https://help.ubuntu.com/community/PinningHowto PinningHowto] 🇬🇧
* [https://help.ubuntu.com/community/PinningHowto PinningHowto] 🇬🇧
* [https://wiki.ubuntuusers.de/APT/ APT] Übersichtsseite zum Paketmanagement mit APT
* [https://wiki.ubuntuusers.de/APT/ APT] Übersichtsseite zum Paketmanagement mit APT


== Verweise ==
=== Verweise ===
* <tt>man 5 apt_preferences</tt>  
* <tt>man 5 apt_preferences</tt>
* [http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.de.html Apt-Howto] (Abschnitt 3.10) und [https://wiki.debian.org/AptPinning AptPinning].  
* [http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.de.html Apt-Howto] (Abschnitt 3.10) und [https://wiki.debian.org/AptPinning AptPinning].
* Folgender Link stelt anscheinend detaillierte Informationen bereit:  
* Folgender Link stelt anscheinend detaillierte Informationen bereit:
** [http://www.xs4all.nl/~carlo17/howto/debian.html#errata http://www.xs4all.nl/~carlo17/howto/debian.html#errata]  
** [http://www.xs4all.nl/~carlo17/howto/debian.html#errata http://www.xs4all.nl/~carlo17/howto/debian.html#errata]
* [https://manpages.debian.org/man/5/apt_preferences apt_preferences(5)] Benutzerhandbuch (Manpage)  
* [https://manpages.debian.org/man/5/apt_preferences apt_preferences(5)] Benutzerhandbuch (Manpage)
* [http://jaqque.sbih.org/kplug/apt-pinning.html Apt-Pinning for Beginners] - eine gute Referenz, von der heftig geborgt wurde.  
* [http://jaqque.sbih.org/kplug/apt-pinning.html Apt-Pinning for Beginners] - eine gute Referenz, von der heftig geborgt wurde.
* [http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.de.html#s-pin APT HOWTO] Abschnitt 3.10  
* [http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.de.html#s-pin APT HOWTO] Abschnitt 3.10
* [http://www.argon.org/~roderick/apt-pinning.html http://www.argon.org/~roderick/apt-pinning.html]  
* [http://www.argon.org/~roderick/apt-pinning.html http://www.argon.org/~roderick/apt-pinning.html]
* [http://www.debian.org/doc/manuals/debian-reference/ch02.de.html#_tweaking_candidate_version Debian Referenz über apt-pinning]
* [http://www.debian.org/doc/manuals/debian-reference/ch02.de.html#_tweaking_candidate_version Debian Referenz über apt-pinning]


[[Kategorie:apt]]
[[Kategorie:apt]]

Version vom 1. April 2023, 10:20 Uhr

Apt-Pinning ist eine Möglichkeit bestimmte Paketquellen bevorzugt zu behandeln

Beschreibung

  • So kann man z.B. bei einer LTS-Version bleiben, aber gezielt Pakete von einer neueren Version oder einer anderen inoffiziellen Quelle beziehen.
  • Oder man kann an einem Paket in einer bestimmten Version festhalten und somit dessen Aktualisierung oder Deinstallation verhindern.
  • Das Pinning erfolgte früher traditionell in der Datei /etc/apt/preferences.
  • Seit Ubuntu 10.04 sollte man den Ordner /etc/apt/preferences.d/ nutzen, in dem man eine neue Datei mit einem beliebigen Namen anlegt.
  • Idealerweise enthält der Dateiname dann einen Hinweis auf die jeweilige Paketquelle.
  • Diese Datei darf entweder die Dateiendung .pref oder aber keine Endung besitzen (z.B. xenial.pin würde ignoriert werden).
  • Unabhängig vom Speicherort muss das Anlegen und die Bearbeitung mit einem Editor [1] mit Root-Rechten [2] erfolgen.
  • Im weiteren Verlauf folgen verschiedene Beispiele, wie man die jeweiligen Package-Informationen des gewünschten Pakets formuliert.

Installation

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Anwendungen

Fehlerbehebung

Konfiguration

Dateien

Sicherheit

Siehe auch

Unterseiten

Dokumentation

RFC

Man-Pages

Info-Pages

Links

Einzelnachweise

Projekt

Weblinks

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5

TMP

Regeln

BEISPIEL

/etc/apt/sources.list

## Offizielle Quellen
deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
## Inoffizielle Quelle
deb http://peters-ubuntupakete.example.org/ubuntu/ xenial main restricted universe multiverse

Pinning per Release

Hinweis
Grundsätzlich definiert eine Leerzeile einen neuen Abschnitt für einen weiteren Eintrag. Leerzeilen zwischen Package, Pin und Pin-Priority sind nicht erlaubt!

Beispiel

/etc/apt/preferences.d/xenial

Package: *
Pin: release v=16.04, l=Ubuntu
Pin-Priority: 1000
  • Von nun an haben alle Pakete aus offiziellen Paketquellen für die Version 16.04 und dem Distributionsnamen (Label) Ubuntu Vorrang, selbst wenn es in anderen Quellen neuere Pakete gibt.
  • Eine Formulierung wie Pin: release a=xenial hätte nicht ausgereicht, da es ja auch Paketquellen von Ubuntu 16.04 gibt, die xenial-security, xenial-updates etc. heißen.
  • Erst wenn es Pakete dort nicht gibt, werden diese (soweit verfügbar) aus anderen Quellen installiert.
  • Die verschiedenen Parameter für Pin: release werden im Abschnitt Parameter für Pinning per Release weiter unten erläutert.

Pinning nach Ursprung

Beispiel

/etc/apt/preferences.d/peters-ubuntupakete

Package: *
Pin: origin peters-ubuntupakete.example.org
Pin-Priority: 300
  • Dieser Fall setzt die Priorität für eine bestimmte Internetadresse (origin).
  • Die genaue Bedeutung der Pin-Priority wird im Abschnitt Werte für Pin-Priority weiter unten erläutert.

Pinning per Version

Der Dateiname für eine bestimmte Programmversion lautet z.B. /etc/apt/preferences.d/hello:

Package: hello
Pin: version 2.1.1*
Pin-Priority: 1000

Dieses Beispiel verhindert die Installation des Paketes hello in einer neueren Version als 2.1.1, aber auch die unbeabsichtigte „automatische“ Deinstallation aufgrund von Konflikten.

Parameter für Pinning per Release

Folgende Parameter können für das Pinnen mittels release verwendet werden:* a (archive) - Der Name eines Repositories, z.B. xenial oder xenial-backports

  • c (components) - Der Bereich eines Repositories, z.B. universe
  • v (version) - Version des Repositories bzw. der Veröffentlichung, z.B. 16.04 für xenial
  • o (origin) - Die "Erzeuger" des Repositories z.B. Ubuntu oder LP-PPA-eclipse-team. Nicht zu Verwechseln mit origin als Quelle (Domainname).
  • l (label) - Name der Distribution, z.B. Ubuntu

Die genauen Werte können mittels des Befehls apt policy nachgeschlagen werden.

Hier ein Ausschnitt aus der Ausgabe dieses Kommandos:

 25 http://packages.medibuntu.org bionic/free Packages
    release v=18.04,o=Medibuntu,a=bionic,l=Medibuntu,c=free
    origin packages.medibuntu.org
500 http://ppa.launchpad.net/mozillateam/ppa/ubuntu bionic/main Packages
    release v=18.04,o=LP-PPA-mozillateam,a=bionic,n=bionic,l=Firefox ESR and Thunderbird stable builds,c=main
    origin ppa.launchpad.net
500 http://de.archive.ubuntu.com bionic/main Packages
    release v=18.04,o=Ubuntu,a=bionic,l=Ubuntu,c=main
    origin de.archive.ubuntu.com
[.....]

Mit Pinning verwaltete Pakete:

firefox-esr-locale-de -> 52.9.0esr+build2-0ubuntu0.18.04.1 mit Priorität 1000
firefox-esr -> 52.9.0esr+build2-0ubuntu0.18.04.1 mit Priorität 1000
[.....]

Die Werte aus den release-Zeilen können ganz oder teilweise zum Pinning übernommen werden.

Werte für Pin-Priority

Die Werte für Pin-Priority in der Datei /etc/apt/preferences müssen positive oder negative ganze Zahlen sein. Sie werden wie folgt interpretiert:* größer 999: Version wird in jedem Fall installiert, auch wenn das einen Downgrade des Paketes nach sich zieht

  • von 990 bis 999 - Version wird installiert, auch wenn sie nicht zum Release gehört, es sei denn ein aktuelleres Pakete ist bereits installiert
  • von 500 bis 989 - Version wird installiert, es sei denn, es gibt eine Version, die zum Release gehört oder eine aktuellere Version ist bereits installiert
  • von 100 bis 499 - Version wird installiert, es sei denn, es gibt eine aktuellere die nicht zum Release gehört oder die bereits installierte Version ist aktueller
  • von 1 bis 99 - Version wird nur dann installiert, wenn es keine bereits installierte gibt
  • negativer Wert - Version wird nicht installiert

Das Paket mit der höchsten Punktzahl wird immer bevorzugt.

Experten-Info
Ausführlichere Informationen hierzu findet man in der Manpage von apt_preferences oder im APT HOWTO

Überprüfung

Die Wirkung des Apt-Pinnings auf bestimmte Pakete kann mit folgendem Befehl überprüft werden:

# apt policy PAKET(E)

Gezielte Umgehung mit apt-get

Im Terminal [2] kann man mit apt-get gesetzte Prioritäten aber auch gezielt umgehen.

Folgender Aufruf installiert z.B. das Programm MPlayer aus dem Paketbereich xenial (Ubuntu 16.04). Dabei werden Abhängigkeiten nach der Priorität erfüllt.

# apt-get -t xenial install mplayer-custom

apt-mark - Aktuelle Version behalten

# apt-mark hold firefox 

Dieser Befehl setzt die aktuell installierte Firefox Version auf "Halten", ist also identisch mit dem Pin auf die aktuelle Version. Um das automatische updaten wieder zu erlauben gibt man den folgenden Befehl ein:

sudo apt-mark unhold firefox

Beispiele

Von proposed-Quellen downgraden

  • Mit Pinning gibt es eine vergleichsweise einfache Möglichkeit, ungewollte Upgrades auf Pakete aus den proposed-Quellen rückgängig zu machen, sprich auf die herkömmlichen und i.d.R. gut getesteten Pakete bzgl. Installationsroutine und Systemintegration downzugraden.
  • Zuerst deaktiviert man die proposed-Quellen [3] und aktualisiert die Paketindexdateien.

Dann legt man die Datei /etc/apt/preferences/no-proposed an:

Package: *
Pin: release a=ARCHIV*
Pin-Priority: 1001
  • Dabei ist ARCHIV durch den Codenamen der jeweiligen Ubuntu-Version zu ersetzen.
  • Codenamen sind beispielsweise trusty, xenial usw.
  • Nach dem Codenamen sollte ein Stern * gesetzt werden, damit auch Pakete aus den Quellen ARCHIV-updates und ARCHIV-security berücksichtigt werden.

Anschließend kann ein Upgrade bzw. Downgrade der Pakete durchgeführt werden:

# apt-get dist-upgrade 

Nachdem die Paketversionen korrigiert wurden, sollte die Pinning-Datei wieder entfernt werden, damit irgendwann in Zukunft ein Upgrade auf eine neuere Ubuntu-Version ohne Probleme möglich ist.

Einzelne Pakete aus älterer/neuerer Ubuntu-Version installieren

  • Mitunter möchte man eine aktuellere Version eines Pakets aus der nächsten Ubuntu-Version nutzen, ist aber nicht bereit, ein komplettes Upgrade zu machen.
  • Oder aber man hat ein Upgrade hinter sich, die neue Version eines Programms macht jedoch Probleme und man würde lieber für dieses eine Paket zur früheren Version zurückkehren.
  • Die Methode mit Apt-Pinning entspricht im Prinzip dem manuellen Herunterladen und Installieren der entsprechenden Pakete von http://packages.ubuntu.com, ist aber deutlich bequemer, besonders wenn verschiedene Abhängigkeiten ebenfalls einen Up- bzw. Downgrade erfordern.
Achtung
Die Verwendung von Paketen aus anderen Ubuntu-Versionen kann im Einzelfall eine pragmatische Lösung sein, in der Regel ist aber davon abzuraten. Besonders bei einer großen Zahl an Abhängigkeiten sind Probleme vorprogrammiert.

Beispiel

Das Paket subversion (siehe SVN) liegt für Ubuntu 16.04 (xenial) in der Version 1.6.17 und für Ubuntu 17.04.10 (zesty) in der Version 1.7.5 vor.

Nach einem Upgrade auf Ubuntu 17.04 möchte man zur Version 1.6 des Pakets zurückkehren.

Dazu fügt man den Paketquellen folgende Zeile hinzu [3]:

deb http://archive.ubuntu.com/ubuntu xenial main
deb-src http://archive.ubuntu.com/ xenial main
deb http://archive.ubuntu.com/ xenial-updates main
deb http://archive.ubuntu.com/ xenial-security main

Nun wird in der Datei /etc/apt/preferences folgender Inhalt ergänzt (bzw. die Datei neu angelegt)

Package: subversion
Pin: version 1.6*
Pin-Priority: 1001
Package: *
Pin: release v=16.04, l=Ubuntu
Pin-Priority: -1
  • Nun kann nach Aktualisieren der Paketlisten mit apt-get update das Paket subversion aus den Quellen von Ubuntu 16.04 installiert werden [4].
  • Wurde es bereits installiert, wird mit apt-get dist-upgrade automatisch die ältere Version installiert.
  • Unter Umständen müssen je nach Komplexität der Abhängigkeiten noch weitere Pinning-Einträge hinzugefügt werden.

Einzelne Pakete aus einem Sammel-PPA installieren

  • Bei der Verwendung eines Personal Packages Archiv (PPA) tritt immer wieder das Problem auf, dass nach dem Einbinden und Aktualisieren nicht nur das gewünschte Programm, sondern - je nach PPA - eine ganze Reihe weiterer Programme in den Paketquellen auftaucht, die u.U. mit den Versionen aus den offiziellen Paketquellen kollidieren können.
  • Die Nutzung dieser Sammel-PPAs kann deutlich vereinfacht werden, in dem man nur das oder die gewünschten Pakete aus einem PPA zulässt (und allen anderen blockiert).
  • Zwingende Voraussetzung: das Paket hat keine speziellen Abhängigkeiten, die ebenfalls aus dem PPA stammen müssen.

Dazu legt man - vor dem Installieren des Pakets - eine Datei /etc/apt/preferences.d/LP-BENUTZER-PPA-NAME mit Root-Rechten und folgendem Inhalt an (LP-BENUTZER-PPA-NAME und Paketnamen bitte anpassen):

Package: *
Pin: release o=LP-PPA-LP-BENUTZER-PPA-NAME
Pin-Priority: -1
Package: foo
Pin: release o=LP-PPA-LP-BENUTZER-PPA-NAME
Pin-Priority: 500
Package: bar
Pin: release o=LP-PPA-LP-BENUTZER-PPA-NAME
Pin-Priority: 500

Während der erste Abschnitt die Nutzung des PPAs praktisch untersagt, gilt dies nicht für die gewünschten Pakete foo und bar.

Pinning

  • Bevor Sie über 'Pinning' nachdenken, sollten Sie prüfen, ob das Paket bereits für ihre Version in Debian Backports bereitgestellt wurde.
  • Wenn Apt-Pinning benutzt wird, müssen Sie die Kompatibilität der Pakete selbst überprüfen, da Debian dies nicht garantiert. Bedenken Sie, dass Apt-Pinning völlig optional ist und Debian schlägt dessen Verwendung nicht ohne gründliche Überlegung vor.
  • Pinning erlaubt es Ihnen gewisse Pakete aus einer bestimmten Version zu verwenden (Stable, Testing, Unstable), ohne die Notwendigkeit das ganze System zu aktualisieren.
  • In der einfachsten Variante werden für Pinning zwei Dateien benötigt, /etc/apt/sources.list und /etc/apt/preferences.
  • Eine zusätzliche Rolle spielt die Zielveröffentlichung (Target Release) welche in /etc/apt/apt.conf (oder in einer Datei unterhalb /etc/apt/conf.d/... und der Apt-Kommandozeile) gesetzt werden kann.

/etc/apt/sources.list

#### testing  #########
deb http://ftp.us.debian.org/debian testing main contrib non-free
#### unstable #########
deb http://ftp.us.debian.org/debian unstable main contrib non-free

In diesem Beispiel laden wir von Testing und Unstable herunter. Sie können dies natürlich dahingehend abändern, dass auch aus Stable geladen wird.

/etc/apt/preferences

Die Datei 'preferences (Einstellungen)' ist der Ort, an dem das tatsächliche 'Pinning' statt findet. Hier ist ein Beispiel:

Package: *
Pin: release n=testing
Pin-Priority: 900
Package: *
Pin: release n=unstable
Pin-Priority: 800

Package ist hier Standard für alle Pakete, angegeben durch den Stern. Pin gibt die Veröffentlichung (Release) an (Testing und Unstable). Pin-Priority gibt die Priorität an. 'apt-get' hat die Voreinstellung, dass die Pakete mit höchster Priorität "gewinnen". Das obige restrukturiert diese Priorität, sodass Pakete aus Testing eine höhere Priorität bekommen.

Weiteres können Sie im apt_preferences(5) Handbuch nachlesen.

Installation von Unstable

Lassen Sie uns annehmen, dass wir Testing verwenden und wir Enlightenment aus Unstable möchten. Es gibt grundsätzlich zwei Methoden für die Installation:

# apt-get install enlightenment/unstable
# apt-get -t unstable install enlightenment

Das erste Beispiel wird nicht versuchen irgendwelche Pakete auf Ihrem System zu aktualisieren; wenn bestimmte Abhängigkeiten verletzt werden, schlägt die Installation fehl. Die zweite Methode wird versuchen, jegliche Abhängigkeiten zu aktualisieren/installieren. Bei der obigen Prozedur wird Sie 'apt-get' natürlich vor dem Fortfahren fragen.

Anmerkungen von JoshuaRodman

Ich persönlich fand die übliche Konfiguration mit Testing mit höherer Priorität und Unstable mit niedrigerer Priorität problematisch. Manchmal hängen Testingpakete von Paketen ab, die momentan nicht in Testing sind (eventuell ein Beispiel für kurzzeitige Störungen), was dazu führt, dass Pakete einfach automatisch aus Unstable gezogen werden. Im Zeitraum von Testing vor der Stabilisierung für die stabile Version Woody, führte dies dazu, dass über 100 Unstable-Pakete installiert waren, ohne dass man dies wusste.

Das Resultat ist, dass ich eine konservativere "Nur wenn ich es sage"-Herangehensweise für eine gemischte Distribution verwende mit ungefähr so einer Pin-Datei:

 Package: *
 Pin: release a=testing
 Pin-Priority: 900
 Package: *
 Pin: release o=Debian
 Pin-Priority: -10

Daraus ergibt sich, dass alle Debianpakete standardmäßig eine Priorität von -10 haben, während Testing einen Bonus von 900 erhält. Das führt zu folgendem Verhalten:

Aus apt_preferences(5)

      500 < P <=990
          veranlasst, dass eine Version installiert wird, außer wenn eine Version verfügbar ist, die zum Ziel-Release gehört oder die installierte Version neuer ist
 [...]
      P < 0
          verhindert das Installieren der Version


Angemerkt sei, dass eine Priorität über 1000 sogar die Installation einer älteren Version ermöglicht (Downgrade), egal welche Priorität das Paket hat. Das bedeutet, dass Sie die Priorität 1001 für eine stabile Quelle (Stable) nutzen können, wenn Sie ältere (stabile) Versionen der installierten Pakete für Ihr System wünschen (beispielsweise von Testing). Dies wird nicht empfohlen, außer die Anzahl der Änderungen ist gering.

Die Installation mittels apt-get install paketname/unstable und apt-get install -t unstable paketname werden beide weiterhin funktionieren, aber nur Pakete aus Unstable werden durch diese Kommandos installiert.

Anmerkungen von ZugSchlus

Keine Haftung

Das englischsprachige Original dieser Seite wurde von ZugSchlus geschrieben, welcher nicht einmal entfernt das Konzept von Pinning versteht. Nehmen Sie daher die Worte "wahrscheinlich", "muss bestätigt werden" und ähnliche Ausdrücke wörtlich und dokumentieren Sie Ihre Funde (mögen diese auch "diese Seite stimmt" oder "diese Seite liegt falsch", optional "diese Seite liegt falsch in Hinsicht auf ...") sein, hier.

Die Deutsche Übersetzung ist irreführend und verwirrend. Bitte die englische Variante lesen.

Paketauswahl

Dies muss überprüft werden

  • Ignoriere Pakete, welche nicht das Kriterium der Version haben
  • Ignoriere Pakete mit niedrigerer Version als die aktuelle, außer die Priorität liegt über 1000
  • Installiere das übriggebliebene Paket, welches die höchste Priorität hat
  • Im Falle einer Gleichheit der Prioritäten, nimm das "gepinnte" Paket
    • Dieser Schritt sollte wahrscheinlich übersprungen werden, wenn die Auswahl auf nichts passt
  • Im Falle ohne Vorauswahl (Pin), nehme höchstpriorisiertes Paket
  • In dem Fall mehrerer Pakete gleicher Version, nimmt Apt-get jenes, welches als erstes in sources.list aufgeführt ist
Beispiele:/etc/apt/preferences

Beispiel 1

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900
Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: 300
Package: *
Pin: release o=Debian
Pin-Priority: -1

ZugSchlus versucht zu erklären:

  • Alle Pakete einer Distribution genannt Testing werden auf 900 gesetzt
  • Alle Pakete von einer Distribution genannt Unstable werden auf 300 gesetzt
  • Alle anderen Pakete von Debian bekommen die Priorität 1 und werden daher nie installiert

Problem

  • Diese Beschränkung kann sich anders verhalten, abhängig von der gesetzten Zielveröffentlichung in anderen Teilen der Apt-Konfiguration.
  • Daher kann dieses Beispiel nicht wirklich dokumentiert werden, ohne mehr Informationen hinzuzufügen.
  • Ein nicht beschränktes Paket welches ein Teil der Zielveröffentlichung hat die Standardpriorität 990, während andere nicht beschränkte Pakete lediglich eine Priorität von 500 haben.

Beispiel 2

Ziel
Ziehe auf einem Unstable-System Dpatch von Experimental

Eine mögliche (und nicht völlig korrekte) Lösung:

  • Unstable und Experimental sind in sources.list
    • Mit der Abwesenheit von einer expliziten Beschränkung (Pin) wird Experimental automatisch auf die Priorität 1 gesetzt. Das liegt daran, dass die Veröffentlichungsdatei von Experimental NotAutomatic: yes (nicht-automatisch: ja) enthält.
  • Priorisieren Sie die gewünschten Pakete auf einen Wert x mit 100<x<500:
    Package: dpatch
    Pin: release o=Debian,a=experimental
    Pin-Priority: 450
    • Ein Wert > 500 wird immer ein Paket aus Experimental auswählen, verhindern dass ein höher nummeriertes Paket aus Unstable installiert wird und "gar kein Paket" auswählen, bevor allen verfügbaren Paketen, wenn die Distribution, die nicht dieses Paket enthält, eine höhere Priorität besitzt.
    • Unglücklicherweise versteht das Paket-Feld weder Wildcards noch Regular Expressions. Sie benötigen einen Absatz pro Paket.
    • Wenn das Paket auf 450 gesetzt ist, wird es wohl nicht automatisch auf ein neueres Paket aus Experimental aktualisiert werden, aber es wird das Paket in experimental solange behalten, wie die Version in Unstable nicht höher ist.

Beispiel 3

  • Nehmen Sie an, dass Sie ein eigenes Repositorium haben, wo Sie eine persönliche Version von Postfix haben.
  • Sie wünschen von Apt, dass es Ihre Version vor offiziellen bevorzugt.

Sie können die Einstellungen auf "origin" (Herkunft) setzen:

Package: *
Pin: origin www.rktmb.org
Pin-Priority: 610
Package: *
Pin: origin ftp.fr.debian.org
Pin-Priority: 600
Fehlersuche

apt-cache policy package liefert Informationen über den Auswahlprozess. Leider ist nicht allgemein bekannt, was die Ausgabe meint. Das folgende ist ein Interpretationsversuch:

$ apt-cache policy exim4-daemon-light
exim4-daemon-light
 Installiert: 4.50-1
 Kandidat: 4.50-1
 Paket-Pin: (nicht gefunden)
 Versionstabelle:
     4.50-4 555
       500 http://mirror sid/main Packages
 *** 4.50-1 555
       100 /var/lib/dpkg/status
     4.44-2 555
       500 http://mirror sarge/main Packages

Die Priorität jeder Version/jedes Ortes ist die Nummer links davon. In diesem Fall 500, 100, 500. Es ist unklar, was die Nummer rechts von der Versionsnummer bedeutet. Einige Leute glauben, dass es lediglich die letzte Periode für das Paket ist, welche in /etc/apt/preferences für das Paket angegeben wurde, während andere glauben, es sei die tatsächliche Beschränkungspriorität des Pakets.

ToDo: Dieser Abschnitt wurde nach mehr oder weniger wissenden Annahmen geschrieben. Könnte dies jemand mit realer Kenntnis über Apt bitte nachprüfen?

Anmerkungen

Wenn Sie sich aufgrund des Links http://www.debian.org/doc/manuals/repository-howto/repository-howto fragen, was die Optionen für Veröffentlichungsdaten basierend auf obigen Link sind, so finden wir:

Archive: Archiv

Component: Komponente

Origin: Ihre Firma

Label: Ihr firmeneigenes Debian-Repositorium

Architecture: Architektur

Daher würde die Zeile "Pin: release a=testing" Archivwerte in der Veröffentlichungsdatei finden, welche Testing heißt.

Links

Verweise