AptPinning
Aus DebianforumWiki
| |
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: 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
Iceweasel und
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: Bitte vorher die man-Page von apt_preferences lesen. |
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.
Überprüfen
Mit dem Befehl apt-cache kann man nun überprüfen, welche Versionen verfügbar sind.
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:
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.
...
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: 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.
...
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:
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:
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:
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.
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
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!