Pakete downgraden

Allgemein gesprochen, steht der Begriff 'Downgrade' für einen Niedergang, eine Abwertung oder einen Rückschritt. Bezogen auf die Verwaltung von Softwarepaketen umfasst es das Einspielen oder Zurückgehen zu einer vorherigen Paketversion. Es stellt damit das Gegenstück zu einer Aktualisierung mittels apt-get upgrade dar (siehe dazu [pakete-aktualisieren]).

Ein Downgrade ist in Betracht zu ziehen, wenn die derzeit installierte Version eines Softwarepakets nicht das leistet, was sie verspricht, bspw. dabei Fehler auftreten oder Inkompatibilitäten mit anderen Softwarepaketen deren Benutzung unmöglich machen. Häufig fallen in letztere Kategorie geänderte Schnittstellen, die noch nicht auf allen nachfolgenden Ebenen konsequent umgesetzt wurden.

Ein Downgrade wird vom Release-Team von Debian GNU/Linux offiziell nicht unterstützt. Alle Mechanismen zur Paketverwaltung und Aktualisierung sind auf das Einspielen einer neueren Version ausgerichtet. Daher verfügt auch keines der hier im Buch vorgestellten Werkzeuge zur Paketverwaltung bislang über einen spezifischen Schalter, um ein Downgrade explizit anzustoßen. Es bleibt daher nur ein Vorgehen über andere Wege, die jedoch auf den bereits zuvor beschriebenen Mechanismen aufsetzen.

Hintergrund und Fragen zum Downgrade

Das Einspielen einer neueren Version ist vom prinzipiellen Ablauf her nicht anders als die Aktualisierung — es laufen die gleichen Mechanismen ab und es kommen die gleichen Werkzeuge zum Einsatz. Der Unterschied ist jedoch die Komplexität, die hier deutlich höher ist.

Vergleichbar ist der Vorgang wie das Bewegen entgegen der Fahrtrichtung in einer Einbahnstraße — es geht so lange gut, wie Ihnen keiner entgegenkommt. Schwierigkeiten können Ihnen nämlich die Maintainerskripte (siehe ``Binärpakete'' in [aufbau-und-format-binaer]) bereiten, die das Downgrade im Normalfall nicht unterstützen. Eventuell ist der Mechanismus, der sie aufruft, auch nicht darauf vorbereitet. Kritisch sind insbesondere die Fälle, wo eine konzeptuelle Änderung im Paket in der Rückrichtung nicht umgebaut werden kann (siehe dazu bspw. den Debian-Bug 764503 [apt-get-update-bug-764503]).

Ein Downgrade ist mit einer Aktualisierung gleichzusetzen. Hierbei benennen Sie jedoch explizit eine ältere Paketversion, die Sie entweder über einen Parameter — `target release'' oder Versionsnummer — beim Aufruf von `dpkg bzw. apt-get angeben oder in der Textoberfläche von Aptitude auswählen. Berechnet die Paketverwaltung nun die Abhängigkeiten zu den übrigen Paketen, kann am Ende dieses Vorgangs auch eine großflächige Änderung am Restbestand der Pakete stehen. Dieser Fall ist nicht ungewöhnlich, denn er kann ebenso bei einer Aktualisierung vorkommen. Die Wahrscheinlichkeit, daß die Änderungen erheblich sind, ist sehr groß.

Wie oben schon benannt, sind diese Änderungen nicht immer rückwärtskompatibel und lösen Verwicklungen aus (Aktualisierungen sind eigentlich bereits hinreichend komplex). Wir empfehlen Ihnen daher, ein Downgrade nur bei dem tatsächlichen Bedarf dafür durchzuführen. Prüfen Sie bitte vorher, ob das Mischen von Veröffentlichungen mittels apt-pinning (siehe [veroeffentlichungen-mischen]) oder das Übersetzen des Pakets aus den Quellen und das nachfolgende Einspielen des eigenen Binärpakets risikoärmer ist.

Ablauf und Durchführung

Bestehende Paketversionen klären

Als Schritt eins bringen Sie in Erfahrung, welche Paketversionen überhaupt installiert und darüberhinaus aus dem Repository ihrer genutzten Veröffentlichung verfügbar sind. Dabei helfen ihnen bspw. die Werkzeuge apt-cache, aptitude, rmadison und apt-show-versions weiter (siehe Paketstatus erfragen'' in [paketstatus-apt-cache-showpkg], Verfügbare Paketversionen ermitteln'' in [verfuegbare-paketversionen-ermitteln] und `Aus welchem Repo kommen die Pakete'' in [aus-welchem-repo-kommen-die-pakete]). Im Aufruf benötigen alle Programme zusätzlich den Namen des gewünschten Pakets und listen in der Ausgabe die letzte Version auf, ggf. noch spezifiziert für die jeweilige Veröffentlichung. Die nachfolgende Ausgabe nutzt `apt-show-versions und zeigt das anhand des Paketes openvpn aus der stabilen Veröffentlichung.

Auflistung der verfügbaren Versionen zum Paket openvpn
$ apt-show-versions openvpn
openvpn:amd64/jessie 2.3.4-5+deb8u1 uptodate
$

Die oben benannten Werkzeuge können Ihnen jedoch nicht darstellen, welche vorherigen Versionen eines Pakets existieren und noch verfügbar sind. Aus obiger Ausgabe von apt-show-versions wird nur ersichtlich, daß derzeit die Version 2.3.4-5+deb8u1 installiert ist und es sich dabei um das derzeit aktuellste Paket handelt. Das Suffix deb8u1 deutet auf eine (Sicherheits-)Aktualisierung der Vorgängerversion 2.3.4-5 hin.

Um diese Version aufzuspüren, kann ein Blick in den Paketcache bereits zum Erfolg führen:

Recherche im Paketcache
$ ls /var/cache/apt/archives/openvpn*
/var/cache/apt/archives/openvpn_2.3.4-5_amd64.deb
/var/cache/apt/archives/openvpn_2.3.4-5+deb8u1_amd64.deb
$

Sie sehen, dass das Paket mit der Version 2.3.4-5 noch lokal herumliegt. Dieses Paket können Sie nachfolgend benutzen.

Sollte obiger Schritt jedoch nicht (mehr) von Erfolg gekrönt sein — weil Sie bspw. den Paketcache aufgeräumt haben — benötigen Sie Plan B. Dieser beinhaltet eine Recherche im Paketarchiv unter 'Debian Snapshots' [Debian-Snapshots] (siehe Das Debian-Paketarchiv).

snapshots.png
Figure 1. Das Debian-Paketarchiv

Dieses Archiv beinhaltet den Zugriff auf alle Varianten eines Pakets, welche jemals Bestandteil einer Veröffentlichung von Debian waren. Über diese Webseite stöbern Sie veröffentlichungsbezogen oder anhand des Paketnamens für das Quell- bzw. Binärpaket. Suchergebnis nach dem Paket openvpn im Paketarchiv zeigt das Suchergebnis für das Paket openvpn. Mit einem Klick auf die gesuchte Version aus der Liste beziehen das benötigte Paket aus dem Archiv und speichern es im Paketcache unter `/var/cache/apt/archives'.

snapshots openvpn.png
Figure 2. Suchergebnis nach dem Paket openvpn im Paketarchiv
Paket austauschen

Im sich nun anschließenden Schritt zwei ersetzen Sie das aktuelle Paket durch dessen Vorgänger. Dieser Schritt ist unkompliziert, sofern keine größeren Paketabhängigkeiten bestehen und repariert werden müssen. Im vorliegenden Fall genügt dazu folgendes:

  1. Entfernen des derzeit installierten openvpn-Pakets mittels apt-get remove openvpn

  2. Einspielen des älteren openvpn-Pakets mittels dpkg -ihv /var/cache/apt/archives/openvpn_2.3.4-5_amd64.deb.

Bei dieser Vorgehensweise bleiben alle Konfigurationsdateien unverändert erhalten.

Paket über die Angabe der Versionsnummer austauschen

  • über die explizite Angabe der Versionsnummer des Pakets:

apt-get install <package-name>=<package-version-number>
Paket über die Angabe der Veröffentlichung austauschen

  • über die explizite Angabe der Veröffentlichung:

apt-get -t=<target release> install <package-name>

results matching ""

    No results matching ""