AptPinning

Aus DebianforumWiki
Zur Navigation springen Zur Suche springen
Wiki ‹ Grundsatzfragen ‹ AptPinning


Getestet.png 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.png 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 Debianpackage.png 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.png Warnung: Bitte vorher Man-Page.png apt_preferences oder via
user@debian:~$ man apt_preferences
lesen.


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.png Warnung: Bitte vorher Man-Page.png apt_preferences oder via
user@debian:~$ man apt_preferences
lesen.


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 Debianpackage.png 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

Quellenverzeichnis

Manpages

Man-Page.png apt_preferences