APT-Pinning in 3 Schritten

Sicherlich warst Du auch schon mal von dem Problem betroffen, das einige Pakete des Stable-Releases ziemlich angestaubt sind und Du eine etwas neuere Variante benötigst. Falls Du jetzt nicht gleich den Compiler anwerfen möchtest bzw. kannst, um Dir das benötigte Paket aus den Quellen zu bauen, so heisst die Lösung "APT-Pinning".

Mit Hilfe des Pinning (engl. to pin: anheften) kannst Du die verschiedenen Entwicklungszweige in Debian miteinander verbinden. D.h. Du kannst den Stable-Zweig auf Deinem System fahren, während einige Pakete aus dem Testing- oder gar Unstable-Zweig stammen.

Diese Vorgehensweise ist jedoch nur für Systeme empfehlenswert, welche keine kritischen Dienste beherbergen bzw. anbieten. Denn nur der Stable-Zweig wird von dem Debian Sicherheits-Team betreut.

Paketquellen anpassen

Als erstes machen wir APT mit den Paketquellen für den Testing- bzw. Unstable-Zweig bekannt. Dazu ergänzen wir die /etc/apt/sources.list um Quellen für den Testing- und Unstable-Zweig, welche derzeit die Namen "Lenny" und "Sid" tragen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Debian Etch
deb http://ftp2.de.debian.org/debian/ etch main non-free contrib
deb-src http://ftp2.de.debian.org/debian/ etch main non-free contrib

# Sicherheitsupdates für Debian Etch
deb http://security.debian.org/ etch/updates main contrib non-free
deb-src http://security.debian.org/ etch/updates main contrib non-free

# Debian Lenny
deb http://ftp2.de.debian.org/debian/ lenny main non-free contrib
deb-src http://ftp2.de.debian.org/debian/ lenny main non-free contrib

# Debian Sid
deb http://ftp2.de.debian.org/debian/ sid main non-free contrib
deb-src http://ftp2.de.debian.org/debian/ sid main non-free contrib

Priorisierung der Zweige

Dazu editieren wir die Datei /etc/apt/preferences. Normalerweise wird bei der Paketauswahl immer das Paket mit der höchsten Versionsnummer gewählt. Wir legen nun jedoch die Priorität anhand der einzelnen Zweige fest.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Package: *
Pin: release a=stable
Pin-Priority: 700

Package: *
Pin: release a=testing
Pin-Priority: 650

Package: *
Pin: release a=unstable
Pin-Priority: 600

In dieser Konfiguration bevorzugen wir nach wie vor Pakete aus dem Stable-Zweig.

Installation der Pakete

Die Installation neuerer Pakete erfolgt wie gewohnt über aptitude install <packageName>. Wenn das gewünschte Paket im Stable-Zweig existiert wird es verwendet, andernfalls wird auf Versionen aus dem Testing- bzw. Unstable-Zweig zurückgegriffen.

Ein wenig problematischer wird es, wenn es das gewünschte Paket sowohl im Stable-Zweig als auch bspw. im Testing-Zweig existiert. Nun gibt es verschiedene Varianten um fortzusetzen:

  1. aptitude install <packageName>/unstable
    In diesem Falle wird die Version des gewünschten Pakets aus dem Unstable-Zweig installiert. Die Abhängigkeiten des Pakets werden versucht im Stable-Zweig aufzulösen. Unter Umständen kann dies zu einer Fehlermeldungen führen, da manche Abhängigkeiten nicht übergreifend aufgelöst werden können.
  2. aptitude -t unstable <packageName>
    Nun wird das gewünschte Paket samt seiner Abhängigkeiten aus dem angegebenen Zweig installiert.