Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Apt-Pinning nennt man eine Technik, bei der in der sources.list verschiedene Paketquellen bevorzugt werden. So kann man bei einer LTS-Version bleiben, aber gezielt Pakete von einer neueren Version oder einer inoffiziellen Quelle ziehen. Es lässt sich auch ein Paket in einer bestimmten Version festhalten oder dessen Installieren oder Deinstallieren verhindern. Dies wird hier als Beispiel dargestellt.
Das Pinning geschieht in der Datei /etc/apt/preferences, die in einem Editor mit Root-Rechten [1] angelegt bzw. bearbeitet werden muss. Im weiteren Verlauf folgen Beispiele. Ab Ubuntu 10.04 müssen im Ordner /etc/apt/preferences.d/ Dateien angelegt werden. Diese können beliebige Namen haben und beliebig viele Regeln enthalten.
Das Folgende ist lediglich ein Beispiel, wie Pinning verwendet werden kann. Die konkreten Gewichtungen sind auf keinen Fall als Empfehlung zu verstehen.
Die Beispieldatei /etc/apt/sources.list soll hier als Beispiel wie folgt aussehen:
## Offizielle Quellen deb http://archive.ubuntu.com/ubuntu/ dapper main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ dapper main restricted universe multiverse ## Inoffizielle Quelle deb http://peters-ubuntupakete.example.org/ubuntu/ dapper main restricted universe multiverse
Package: * Pin: release v=10.04, l=Ubuntu Pin-Priority: 1000
Von nun an haben alle Pakete aus Quellen mit der Version 10.04 und dem Distributionsnamen (Label) Ubuntu den Vorzug, selbst wenn es in anderen Quellen neuere Pakete gibt. Ein Pin: release a=lucid hätte nicht gereicht, da es ja auch Paketquellen von Ubuntu 10.04 gibt, die lucid-security, lucid-updates etc. heißen. Erst wenn es die 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 erläutert.
Package: * Pin: origin peters-ubuntupakete.example.org Pin-Priority: 300
Dieser Fall setzt die Priorität einer bestimmten Internetadresse ("origin"). Die genaue Bedeutung der "Pin-Priority" werden im Abschnitt Werte für Pin-Priority erläutert.
Package: hello Pin: version 2.1.1* Pin-Priority: 1000
Dieses Beispiel verhindert das Installieren einer neueren Version als 2.1.1 des Paketes hello, aber auch die unbeabsichtigte „automatische“ Deinstallation aufgrund von Konflikten.
In der /etc/apt/preferences definiert eine Leerzeile einen neuen Abschnitt für einen weiteren Eintrag. Leerzeilen zwischen Package, Pin und Pin-Priority sind nicht erlaubt!
Im Terminal [2] kann man mit apt-get die Prioritäten aber auch gezielt umgehen. Folgender Aufruf z.B. zieht mplayer aus dem maverick-Paketbereich (= Ubuntu 10.10). Dabei werden Abhängigkeiten nach der Priorität erfüllt.
apt-get -t maverick install mplayer-custom
Folgende Parameter können für das Pinnen mittels release verwendet werden:
a (archive) - Der Name eines Repositories, z.B. lucid oder lucid-backports
c (components) - Der Bereich eines Repositories, z.B. universe
v (version) - Version des Repositories bzw. der Veröffentlichung, z.B. 10.04 für lucid
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 apt-cache policy nachgeschlagen werden. Hier ein Ausschnitt aus der Ausgabe dieses Kommandos.
25 http://packages.medibuntu.org jaunty/free Packages
release v=9.04,o=Medibuntu,a=jaunty,l=Medibuntu,c=free
origin packages.medibuntu.org
500 http://de.archive.ubuntu.com jaunty/main Packages
release v=9.04,o=Ubuntu,a=jaunty,l=Ubuntu,c=main
origin de.archive.ubuntu.com
50 http://ppa.launchpad.net jaunty/main Packages
release v=9.04,o=LP-PPA-eclipse-team,a=jaunty,l=Ubuntu,c=main
origin ppa.launchpad.netDie Werte aus den release-Zeilen können ganz oder teilweise zum Pinning übernommen werden.
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 1000: Version wird in jedem Fall installiert, auch wenn das einen Downgrade des Paketes nach sich zieht
von 991 bis 1000: Version wird installiert, auch wenn sie nicht zum Release gehört, es sei denn ein aktuelleres Pakete ist bereits installiert
von 501 bis 990 : Version wird installiert, wenn es nicht eine Version gibt, die zum Release gehört oder eine aktuellere Version bereits installiert ist
von 101 bis 500: Version wird installiert, es sei denn, es gibt eine aktuellere die nicht zum Release gehört oder die bereits installierte Version ist aktueller
von 0 bis 100: 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 bevorzugt.
Diese Revision wurde am 22. November 2011 um 00:38 Uhr
von aasche erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet:
Paketverwaltung, Installation
2004 – 2011 ubuntuusers.de • Einige Rechte vorbehalten