$ apt-show-versions openvpn openvpn:amd64/jessie 2.3.4-5+deb8u1 uptodate $
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.
openvpn
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:
$ 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).

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'.

openvpn
im PaketarchivPaket 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:
-
Entfernen des derzeit installierten
openvpn
-Pakets mittelsapt-get remove openvpn
-
Einspielen des älteren
openvpn
-Pakets mittelsdpkg -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>