AptPinning
Getestet: Dieser Hinweis soll dir dabei helfen, zu entscheiden, ob dieser Artikel auf deinem System funktionieren wird oder nicht. Solltest du feststellen, dass dieser Artikel bei einer ungetestet Version funktioniert, kannst du das gerne hier korrigieren oder im Forum anmerken.
|
Es gibt immer wieder Situationen und Programme, die entgegen der üblichen Taktik von Debian, eine aktuelle Version eines Programmes erfordern. Um das zu erreichen muss nicht immer die neuste Version des Upstream Projekts am Paketsystem vorbei installiert werden. Oft reicht es, sich statt dessen in den neueren Zweigen von Debian, also Testing, Unstable und Experimental, umzusehen.
Warnung: Bitte den Artikel vollständig lesen, da es sonst zu unerwünschten Systeminkonsistenzen kommen kann. |
Globales Pinning von Softwarequellen am Beispiel von clementine
Möchte man als stable-Nutzer ein Programm, in diesem Beispiel clementine, in der aktuelleren Version aus testing installieren, so muss man auf AptPinning zurückgreifen..
Zusätzliche Quellen aufnehmen
Als erstes muss natürlich testing in die Quellenliste aufgenommen werden. Dazu kann man den folgenden Eintrag entweder komplett in die Datei /etc/apt/sources.list aufnehmen, oder wie beschrieben in dem Ordner /etc/apt/sources.list.d jeweils eine Datei anlegen (empfohlen).
/etc/apt/sources.list.d/testing.list
# Testing deb ftp://ftp.de.debian.org/debian/ testing main
Pinning setzen
Warnung: Bitte vorher apt_preferences oder via user@debian:~$ man apt_preferences
|
Nun wird die Datei /etc/apt/preferences mit folgendem Inhalt angelegt bzw. bearbeitet.
Package: * Pin: release n=wheezy Pin-Priority: 900 Package: * Pin: release a=testing Pin-Priority: 800
Abschließend ist ein Update der Paketlisten erforderlich.
root@debian:~# aptitude update
Überprüfen
Mit dem Befehl apt-cache kann man nun überprüfen, welche Versionen verfügbar sind.
user@debian:~$ apt-cache policy clementine
clementine:
Installiert: 1.0.1+dfsg-2+b1
Installationskandidat: 1.0.1+dfsg-2+b1
Versionstabelle:
1.1.1+dfsg-2+b1 0
800 http://ftp.debian.org/debian/ testing/main amd64 Packages
*** 1.0.1+dfsg-2+b1 0
900 http://ftp.debian.org/debian/ wheezy/main amd64 Packages
100 /var/lib/dpkg/status
Installieren
Die Installation erfolgt dann mittels des Befehls:
root@debian:~# aptitude install -t testing clementine
Explizites Pinning von Softwarequellen am Beispiel von iceweasel
Debian liefert in stable die ESR-Version von Iceweasel aus. Möchte man die aktuelle Version von Iceweasel nutzen, muss man die Fremdquelle http://mozilla.debian.net/ einbinden.
Zusätzliche Quellen aufnehmen
Als erstes müssen natürlich die Quelle in die Quellenliste aufgenommen werden. Dazu kann man die folgenden Einträge entweder komplett in die Datei /etc/apt/sources.list aufnehmen, oder wie beschrieben in dem Ordner /etc/apt/sources.list.d jeweils eine Datei anlegen (empfohlen).
/etc/apt/sources.list.d/backports.list
# Backports deb http://mozilla.debian.net/ wheezy-backports iceweasel-release
Pinning setzen
Warnung: Bitte vorher apt_preferences oder via user@debian:~$ man apt_preferences
|
Nun wird die Datei /etc/apt/preferences mit folgendem Inhalt angelegt bzw. bearbeitet.
Package: iceweasel Pin: release n=wheezy-backports Pin-Priority: 900
Abschließend ist ein Update der Paketlisten erforderlich.
root@debian:~# aptitude update
Überprüfen
Mit dem Befehl apt-cache kann man nun überprüfen, welche Versionen verfügbar sind.
user@debian:~$ apt-cache policy iceweasel
iceweasel:
Installiert: 17.0.9esr-1~deb7u1
Installationskandidat: 24.0-1~bpo70+1
Versionstabelle:
24.0-1~bpo70+1 0
500 http://mozilla.debian.net/ wheezy-backports/iceweasel-release amd64 Packages
*** 17.0.9esr-1~deb7u1 0
500 http://ftp.debian.org/debian/ wheezy/main amd64 Packages
100 /var/lib/dpkg/status
Installieren
Die Installation erfolgt dann mittels des Befehls:
root@debian:~# aptitude install iceweasel
Durch die Erhöhung der Priorität von mozilla.debian.net für das Paket Iceweasel, wird nun automatisch die Iceweasel-Version aus mozilla.debian.net installiert.
Prioritäten
Das Verhalten von apt lässt sich beim AptPinning durch Prioritäten steuern. Hier ein Überblick über die Bedeutung der verschiedenen Werte:
Priorität | Beschreibung |
---|---|
>= 1000 | veranlasst, dass eine Version installiert wird, auch wenn dies ein Downgrade des Pakets durchführt |
990 <= P < 1000 | veranlasst, dass eine Version installiert wird, auch wenn diese nicht vom Ziel-Release kommt, außer wenn die installierte Version aktueller ist |
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 |
100 <= P < 500 | veranlasst, dass eine Version installiert wird, außer wenn eine Version verfügbar ist, die zu einer anderen Distribution gehört oder die installierte Version neuer ist |
0 < P < 100 | veranlasst, dass eine Version nur dann installiert wird, wenn es keine installierte Version des Pakets gibt |
P < 0 | verhindert das ein Paket installiert wird |
Pins
Pin | Beschreibung |
---|---|
- a | Wählt das Archiv, z.B. stable, testing, unstable |
- n | Wählt den Codenamen, z.B. wheezy, jessie |
- v | Wählt die Version, z.B. 7.0 |
- c | Wählt die Lizensierungskomponente, z.B. main, contrib, non-free |
- o | Wählt den Ursprung eines Pakets, z.B. debian.org, deb-multimedia.org |
- l | Wählt das Label, z.B. debian, wheezy-backports |
Globbing und reguläre Ausdrücke
Apt-Pinning unterstützt auch Globbing bzw. reguläre Ausdrücke, d.h. man muss nicht jedes Paket einzeln angeben, sondern kann mehreren Paketen mit einem Ausdruck die entsprechende Priorität zuweisen.
Fasst man den Begriff in zwei /, so wird die Priorität allen Paketen, die diese Zeichenkette enthalten zugewiesen. Hängt man ein * an einen Begriff, werden alle Pakete, die mit diesem Begriff beginnen erfasst.
Package: gnome* /kde/ Pin: release n=experimental Pin-Priority: 500
Obiges Beispiel würde also allen Paketen aus experimental, die kde im Namen enthalten oder mit gnome beginnen die Priorität 500 zuweisen.
Überblick über installierte Versionen
Um den Überblick zu behalten, welches Paket man in welcher Version aus welchem Release installiert hat, kann man das Programm apt-show-versions installieren.
Ein einfacher Aufruf ohne Parameter listet alle installierten Pakete auf (Ausgabe gekürzt):
user@debian:~$ apt-show-versions
accountsservice:amd64/testing 0.6.34-2 uptodate
acl:amd64/testing 2.2.52-1 uptodate
acpi:amd64/testing 1.6-1 uptodate
acpi-fakekey:amd64/testing 0.141-2 uptodate
acpi-support:all/testing 0.141-2 uptodate
acpi-support-base:all/testing 0.141-2 uptodate
acpid:amd64/testing 1:2.0.20-1 uptodate
adduser:all/testing 3.113+nmu3 uptodate
aisleriot:amd64/testing 1:3.8.0-2 uptodate
alacarte:all/testing 3.10.0-1 uptodate
anacron:amd64/testing 2.3-19 uptodate
apache2-bin:amd64/testing 2.4.6-3 uptodate
apg:amd64/testing 2.2.3.dfsg.1-2 uptodate
apt:amd64/testing 0.9.11.4 uptodate
apt-show-versions:all/testing 0.22.3 uptodate
Um die installierte Version eines konkreten Paketes einzusehen, muss der Paketname als Parameter übergeben werden:
user@debian:~$ apt-show-versions clementine
clementine:amd64/testing 1.1.1+dfsg-2+b1 uptodate