AptPinning

Aus DebianforumWiki

Wechseln zu: Navigation, Suche
WikiGrundsatzfragen ‹ AptPinning

Review.png Review: Dieser Artikel ist für das Review freigegeben.


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.

Inhaltsverzeichnis


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 icedove

Mit der Veröffentlichung von Debian Squeeze sind die Versionen von Debianpackage.png Iceweasel und Debianpackage.png Icedove nicht mehr ganz aktuell.

Zur Zeit der Veröffentlichung ist Icedove in der Version 3.0.x in Squeeze, aber bereits die Version 3.1.x in experimental. Um nun Icedove in dieser Version installieren zu können, zukünftig Updates zubekommen und sein System nicht zu schädigen, hier eine kurze Anleitung.

Zusätzliche Quellen aufnehmen

Als erstes müssen natürlich die neueren Zweige 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/testing.list

# Testing
deb ftp://ftp.de.debian.org/debian/ testing main

/etc/apt/sources.list.d/unstable.list

# Unstable
deb ftp://ftp.de.debian.org/debian/ unstable main

/etc/apt/sources.list.d/experimental.list

# Experimental
deb ftp://ftp.de.debian.org/debian/ experimental main

Pinning setzen

Warnung.png Warnung: Bitte vorher die man-Page von apt_preferences lesen.

user@debian:~$ man apt_preferences

Nun wird die Datei /etc/apt/preferences mit folgendem Inhalt angelegt bzw. bearbeitet.

Package: *
Pin: release n=squeeze
Pin-Priority: 900

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

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

Package: *
Pin: release a=experimental
Pin-Priority: 250


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.

root@debian:~$ apt-cache policy icedove
icedove:
  Installiert: 3.0.11-1+b1
  Kandidat: 3.0.11-1+b1
  Versionstabelle:
     3.1.7-1 0
        250 ftp://ftp.de.debian.org/debian/ experimental/main i386 Packages
 *** 3.0.11-1+b1 0
        900 ftp://ftp.de.debian.org/debian/ squeeze/main i386 Packages
        750 ftp://ftp.de.debian.org/debian/ unstable/main i386 Packages
        800 ftp://ftp.de.debian.org/debian/ testing/main i386 Packages
        100 /var/lib/dpkg/status

Installieren

Die Installation erfolgt dann mittels des Befehls:

root@debian:~$ aptitude install -t experimental icedove

Dabei wird es aber zunächst zu Fehlern der Abhängigkeiten kommen, die man auflösen muss. Dabei wird Aptitude immer wieder Lösungsvorschläge liefern, die man sich genau ansehen sollte. Dabei muss man solange nein sagen, bis die Aktualisierung der abhängigen Pakete auftaucht. Anhand der Abhängigkeiten und deren möglicher Auflösung sieht man auch gut, ob das Ganze sinnvoll ist oder nicht. In diesem Falle mit Icedove passt es, lediglich icedove-l10n-de und die libsqlite müssen zusätzlich aktualisiert werden. Weitere Abhängigkeiten gibt es hier nicht.

root@debian:~$ aptitude install -t experimental icedove
...
Die folgenden Aktionen werden diese Abhängigkeiten auflösen:

Aktualisieren der folgenden Pakete:
1) icedove-l10n-de [1:3.0.10-1 (now, stable) -> 1:3.1.7-1 (experimental)]
2) libsqlite3-0 [3.7.3-1 (now, stable) -> 3.7.4-2 (testing, unstable)]
Diese Lösung akzeptieren? [Y/n/q/?] y?
...

Alternativ kann man auch nur aptitude ausführen und sich dann mit den entsprechenden Tastenkombinationen durcharbeiten, das soll aber hier nicht beschrieben werden, der aufgezeigte Weg führt genauso zum Ziel.

Explizites Pinning von ausgewählten Paketen

Warnung.png Warnung: Nachtrag (05.03.2011): Leider entpuppt sich die Installation von iceweasel-3.6 via Pinning in Squeeze als eine Sackgasse. Es ist wie hier im aptosid Forum beschrieben aus den offiziellen Debianquellen verschwunden. Alternativ kann aber das Mozilla-Debian-Repository verwendet werden. Zur alten Version des Abschnitts ...

Das o.g. beispielhafte Pinning ist als global anzusehen. Das heißt, dass die im Beispiel gewählten Einstellungen immer die Versionen der jeweiligen Pakete als Installationskandidaten auswählen werden, die aus der Quelle mit dem höchsten Pinning-Wert stammen, was auch zu Deaktualisierugen führen kann. Der Grund dafür ist einfach: Das Pinning bezieht sich bisher nur auf die Gewichtung der einzelnen Repositories, nicht aber auf die gewünschten Versionen.

Aufschluß über das Verhalten gibt.

root@debian:~$ apt-cache policy paketname

...

Ein praktisches Beispiel anhand von iceweasel

Im Weiteren wird ein Fall dokumentiert, der sich so auch mit anderen Paketen in Zukunft abspielen kann. Vorausgegangen war ein globales Pinning und die Installation von iceweasel der Version 3.6* aus experimental. Nun ergibt sich die Situation, dass iceweasel 3.6* aus den Quellen gestrichen, dafür aber die Version 4.0* Einzug in experimental hilt.

Ausgabe ohne explizites Pinning:

root@debian:~$ apt-cache policy iceweasel
iceweasel:
  Installiert: 3.6.13-2
  Kandidat:    3.5.16-4
  Versionstabelle:
     4.0~b12-1 0
        200 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ experimental/main amd64 Packages
 *** 3.6.13-2 0
        100 /var/lib/dpkg/status
     3.5.17-1 0
        750 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ sid/main amd64 Packages
     3.5.16-4 0
        900 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ squeeze/main amd64 Packages
        800 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ testing/main amd64 Packages

Beim nächsten Update wird also versucht iceweasel auf die Version 3.5* zu deaktualisieren! Siehe Installiert und Kandidat. Grund: Der Pinning-Wert für experimental ist zu gering.

Warnung.png Warnung:

Eine globale Erhöhung des Pinning-Wertes hätte aber zur Folge, dass das gesamte System auf den Stand von experimental gehoben wird.


Da das aber nicht gewollt ist und die weitere Möglichkeit einer Aktualisierung auf die Version 4.0* nicht vorgenommen werden soll, muss eine bestimmte Version gepinnt werden. Die gewünschte Version wird somit bezogen und erhalten.

Damit dieses Beipsiel konsistent bleibt, werden die Debian-Mozilla Quellen zusätzlich eingebunden. Danach befinden sich die Versionen 3.5*, 3.6* und 4.0* zur Auswahl. Anschließend wird die Version 3.6* manuell installiert.

Es ist nun eine Situation geschaffen, die die alten Versionen durch globales Pinning mit höheren Pinning-Werten beinhaltet, das manuelle/gewollte Übergehen der Version durch Einbindung der Debian-Mozilla Quellen und - und das ist der Knackpunkt - eine neuere Version sich bereits in den Quellen (experimental) befindet.

Ausgabe ohne expizites Pinning und mit Debian Mozilla Quellen:

root@debian:~$ apt-cache policy iceweasel
iceweasel:
  Installiert: 3.6.15-1~bpo60+1
  Kandidat:    3.6.15-1~bpo60+1
  Versionstabelle:
     4.0~b12-1 0
        200 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ experimental/main amd64 Packages
 *** 3.6.15-1~bpo60+1 0
        500 http://mozilla.debian.net/ squeeze-backports/iceweasel-3.6 amd64 Packages
        100 /var/lib/dpkg/status
     3.5.17-1 0
        750 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ sid/main amd64 Packages
     3.5.16-4 0
        900 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ squeeze/main amd64 Packages
        800 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ testing/main amd64 Packages

Zur Demonstration wird nun der Pinning-Wert für die Mozilla-Quellen mit denen von experimental gleichgesetzt.

Eintrag in /etc/apt/preferences

Package: *
Pin: release o=Debian Mozilla Team,a=squeeze-backports,n=pkg-mozilla
Pin-Priority: 200

Die Pinning-Werte sind jetzt gleich, beachtet werden soll hier die Änderung des Kandidateintrags.

root@debian:~$ apt-cache policy iceweasel
iceweasel:
  Installiert: 3.6.15-1~bpo60+1
  Kandidat:    4.0~b12-1
  Versionstabelle:
     4.0~b12-1 0
        200 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ experimental/main amd64 Packages
 *** 3.6.15-1~bpo60+1 0
        200 http://mozilla.debian.net/ squeeze-backports/iceweasel-3.6 amd64 Packages
        100 /var/lib/dpkg/status
     3.5.17-1 0
        750 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ sid/main amd64 Packages
     3.5.16-4 0
        900 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ squeeze/main amd64 Packages
        800 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ testing/main amd64 PackagesRootShell

Das explizite Pinning kann nun veranschaulicht werden. Es wird die Version 3.6* des Paketes iceweasel auf den Pinning-Wert 950 gesetzt.

Package: iceweasel
Pin: version 3.6*
Pin-Priority: 950

Ausgabe mit explizitem Pinning

root@debian:~$ apt-cache policy iceweasel
iceweasel:
  Installiert: 3.6.15-1~bpo60+1
  Kandidat:    3.6.15-1~bpo60+1
  Paket-Pinning: 3.6.15-1~bpo60+1
  Versionstabelle:
     4.0~b12-1 950
        200 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ experimental/main amd64 Packages
 *** 3.6.15-1~bpo60+1 950
        200 http://mozilla.debian.net/ squeeze-backports/iceweasel-3.6 amd64 Packages
        100 /var/lib/dpkg/status
     3.5.17-1 950
        750 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ sid/main amd64 Packages
     3.5.16-4 950
        900 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ squeeze/main amd64 Packages
        800 ftp://ftp.fu-berlin.de/pub/unix/linux/mirrors/debian/ testing/main amd64 Packages

Man sieht hier nun sehr gut, dass der Installationskandidat mit dem der gepinnten Version übereinstimmt. Der neue Eintrag Paket-Pinning bestätigt die Einstellungen.

Um das Beispiel abzuschließen und das System wieder in einen produktiven Stand zu versetzen entfernt man den Pinning Eintrag, der die Debian-Mozilla Quellen herabstuft. Anschließend kann man noch das deusche Sprachpaket installieren, da die Debian-Mozilla Version ohne Übersetzungspakete daher kommt.

Disclaimer

Dieser Wiki-Artikel ist noch im Enstehen, wir bitten um Verständis zur etwaigen Unvollständigkeit und Unrichtigkeit der hier genannten Vorgehensweisen. Wer Vorschläge zur Verbesserung hat, kann und sollte dies bitte kundtun.

Wir sind dankbar für alle sachdienlichen Hinweise ;-)

Und nicht vergessen!

Bitte unbedingt vorher informieren!

user@debian:~$ man apt_preferences
Meine Werkzeuge