Product SiteDocumentation Site

6.7. Von einer Stable Distribution auf die nächste aktualisieren

Eine der bekanntesten Eigenschaften von Debian ist die Fähigkeit, ein installiertes System von einer Stable Veröffentlichung auf die nächste aktualisieren zu können: dist-upgrade – ein wohlbekannter Ausdruck – hat erheblich zum Ansehen des Projekts beigetragen. Mit ein paar Vorkehrungen dauert die Aktualisierung eines Computers zwischen wenigen Minuten bis zu einigen Duzend Minuen, abhängig von der Downloadgeschwindigkeit der Paketquellen.

6.7.1. Empfohlene Vorgehensweise

Da Debian einiges an Zeit zur Weiterentwicklung zwischen den Stable Veröffentlichungen hat, sollten Sie vor einer Aktualisierung die Veröffentlichungshinweise lesen.
In diesem Abschnitt gehen wir auf die Aktualisierung eines Stretch Systems auf Buster ein. Dies ist ein erheblicher Eingriff in ein System, der niemals zu 100 % risikofrei ist und nur nach der Sicherung aller wichtigen Daten unternommen werden sollte.
Eine weitere gute Eigeschaft, die das Aktualisieren erleichtert (und verkürzt), ist das Aufräumen der installierten Pakete und dadurch nur die zu behalten, die wirklich gebraucht werden. Hilfreiche Werkzeuge dazu sind unter anderem aptitude, deborphan und debfoster (siehe Abschnitt 6.2.7, „Automatisch installierte Pakete nachverfolgen“). Sie können beispielsweise untenstehenden Befehl absetzen und anschließend im interaktiven Modus von aptitude die geplanten Aufräumarbeiten genau zu überprüfen und Feineinstellungen vornehmen:
# deborphan | xargs aptitude --schedule-only remove
Nun zur Aktualisierung selbst: Zuerst müssen Sie die Datei /etc/apt/sources.list anpassen, um APT anzuweisen, die Pakete von Buster anstatt von Stretch zu verwenden. Wenn die Datei ausschließlich Verweise auf Stable statt auf einen expliziten Codenamen enthält, ist diese Änderung nicht einmal nötig, da Stable immer auf die zuletzt veröffentlichte Version von Debian zeigt. In beiden Fällen muss die Datenbank der verfügbaren Pakete aktualisiert werden (mit dem Befehl apt-get update oder der Schaltfläche "Neu laden" in synaptic).
Wenn diese Paketquellen einmal registriert sind, sollte man zuerst eine minimale Aktualisierung mit apt upgrade durchführen. Wenn man die Aktualisierung in zwei Schritten durchführt, erleichtert man die Arbeit der Paket-Verwaltungswerkzeuge und stellt sicher, dass diese in der aktuellsten Version verwendet werden, die möglicherweise die notwendigen bisher aufgelaufenen Fehlerkorrekturen und Verbesserungen beinhalten, um die komplette Aktualisierung der Distribution durchzuführen.
Sobald dieses erste Upgrade abgeschlossen ist, ist es an der Zeit, das Upgrade selbst durchzuführen, entweder mit apt full-upgrade, aptitude oder synaptic. Sie sollten die vorgeschlagenen Aktionen sorgfältig prüfen, bevor Sie sie anwenden: Sie können vorgeschlagene Pakete hinzufügen oder Pakete abwählen, die nur empfohlen und anerkanntermaßen nutzlos sind. Auf jeden Fall sollte das Frontend ein Szenario entwickeln, das in einem kohärenten und aktuellen Buster-System endet. Dann müssen Sie nur noch warten bis die benötigten Pakete heruntergeladen bis, die debconf-Fragen und möglicherweise die Fragen zu lokal modifizierten Konfigurationsdateien beantworten und sich zurücklehnen, während APT seine Magie wirken lässt.

6.7.2. Problembehandlung nach einer Aktualisierung

Trotz der Anstrengungen der Debian-Betreuer verläuft eine größere Systemaktualisierung nicht immer so problemlos, wie man es sich wünschen würde. Neue Softwareversionen könnten inkompatibel zu ihren Vorgängern sein (beispielsweise, weil sich Standardverhaltensweisen oder Datenformate geändert haben). Auch könnten sich Fehler durch die, jeder Debian Veröffentlichung vorangehende, Testphase hindurch gemogelt haben.
Um solche Probleme vorwegzunehmen, können Sie das Paket apt-listchanges installieren, welches Informationen über mögliche Probleme zu Beginn jeder Paketaktualisierung einblendet. Diese Informationen werden von den Paketbetreuern zusammen- und in /usr/share/doc/Paket/NEWS.Debian Dateien zum Nutzen der Anwender bereitgestellt. Das Lesen dieser Dateien (möglicherweise mittels apt-listchanges) sollte helfen, Sie vor bösen Überraschungen zu bewahren.
You might sometimes find that the new version of a software doesn't work at all. This generally happens if the application isn't particularly popular and hasn't been tested enough; a last-minute update can also introduce regressions which are only found after the stable release. In both cases, the first thing to do is to have a look at the bug tracking system at https://bugs.debian.org/package, and check whether the problem has already been reported. If this is case, it will be also listed before the upgrade begins, if you have apt-listbugs installed. If it hasn't, you should report it yourself with reportbug. If it is already known, the bug report and the associated messages are usually an excellent source of information related to the bug:
  • manchmal existiert bereits ein Patch und ist im Fehlerbericht verfügbar. Sie können dann die korrigierte Version des defekten Pakets lokal übersetzen (siehe Abschnitt 15.1, „Ein Paket aus seinen Quellen neu erstellen“);
  • in anderen Fällen könnten andere Anwender bereits eine Übergangslösung für das Problem gefunden und ihre Erkenntnisse in den Antworten zum Fehlerbericht geteilt haben;
  • und in wieder anderen Fällen könnte der Paketbetreuer bereits ein korrigiertes Paket gebaut und veröffentlicht haben.
Abhängig von der Schwere eines Fehlers kann eine neue Paketversion speziell für die nächste Ausgabe der Stable Veröffentlichung vorbereitet werden. Sollte dies der Fall sein, wird das korrigierte Paket im Bereich proposed-updates der Debian Spiegelserver bereitgestellt (siehe Abschnitt 6.1.2.3, „Proposed Updates“). Der entsprechende Eintrag kann dann temporär der Datei sources.list hinzugefügt werden. Aktualisierte Pakete können mit apt oder aptitude installiert werden.
Manchmal ist das korrigierte Paket nicht in diesem Bereich verfügbar, weil es noch von den Stable-Release-Betreuern geprüft werden muss. Sie können auf deren Webseite prüfen, ob dies der Fall ist. Dort aufgeführte Pakete sind noch nicht verfügbar, aber wenigstens wissen Sie, dass der Veröffentlichungsprozess läuft.

6.7.3. Aufräumen nach einem Upgrade

APT sorgt in der Regel für ein sauberes Upgrade, indem es neue und aktualisierte Abhängigkeiten einzieht oder Pakete entfernt, die Konflikte verursachen. Aber selbst wenn es ein so großartiges Werkzeug ist, kann es nicht alle Aufgaben abdecken, mit denen Benutzer und Administratoren nach einem Upgrade konfrontiert werden, da sie eine menschliche Entscheidung erfordern.

6.7.3.1. Aus dem Debian-Archiv entfernte Pakete

Manchmal entfernen die Debian-FTP-Master Pakete aus dem Debian-Archiv, weil sie veröffentlichungskritische Fehler enthalten, von ihrem Upstream-Autor oder ihrem Paketbetreuer aufgegeben wurden oder einfach das Ende ihrer Lebensdauer erreicht haben. In diesem Fall wird ein neueres Debian-Release das Paket nicht mehr ausgeliefern. Um alle Pakete zu finden, die keine Paketquellen haben, verwenden Sie den Befehl apt-show-versions:
$ apt-show-versions | grep "Keine verfügbare Version"
Ein ähnliches Ergebnis kann durch aptitude search ~o erzielt werden. Wenn die gefundenen Pakete nicht mehr benötigt werden, sollten sie aus dem System entfernt werden, da sie nicht mehr wegen kritischer oder sicherheitsbezogener Fehler aktualisiert werden.

6.7.3.2. Dummy- und Übergangspakete

Manchmal kann es notwendig sein, dass ein Paket einen neuen Namen erhält. In diesem Fall wird oft das alte Paket als (fast) leeres Paket beibehalten, wird vom neuen Paket abhängig gemacht und es werden nur die obligatorischen Dateien in /usr/share/doc/Paket/ installiert. Solche Pakete werden als "Dummy"- oder "Übergangs"-Pakete bezeichnet. Wenn der verantwortliche Paketbetreuer auch den Abschnitt dieses Pakets in oldlibs geändert hat, dann können Werkzeuge wie aptitude, deboprhan oder debfoster (siehe Seitenleiste ALTERNATIVE deborphan und debfoster) diese Pakete aufgreifen und ihre Entfernung vorschlagen.
Leider gibt es derzeit keine narrensichere Methode, um sicherzustellen, dass diese Pakete von den oben genannten Werkzeugen automatisch entfernt oder ausgewählt werden. Eine Möglichkeit zu überprüfen, ob das System noch einige dieser Pakete installiert hat, besteht darin, die Paketbeschreibungen der installierten Pakete durchzusehen und dann die Ergebnisse zu überprüfen. Achten Sie darauf, die Ergebnisse nicht für die automatische Entfernung einzuplanen, da diese Methode zu falsch positiven Ergebnissen führen kann:
$ dpkg -l | grep ^ii | grep -i -E "(transition|dummy)"
Da das neue Paket als Abhängigkeit des Übergangspakets eingezogen wird, wird es normalerweise als automatisch installiert markiert und könnte zur Entfernung eingeplant werden, wenn Sie versuchen, das Übergangspaket von Ihrem System zu bereinigen. In diesem Fall können Sie einen der beiden in den Seitenleisten TIPP Entfernen und installieren in einem Durchgang und Abschnitt 6.2.7, „Automatisch installierte Pakete nachverfolgen“ beschriebenen Ansätze verwenden, um das Übergangspaket selektiv zu entfernen.

6.7.3.3. Alte oder unbenutzte Konfigurationsdateien

If the upgrade was successful there might be some configuration file cruft, either from dpkg (see Abschnitt 5.2.3, „Checksummen, Liste der Konfigurationsdateien“), ucf or from removed packages. The latter can be purged by using apt autoremove --purge. The configuration files that were handled by dpkg or ucf during the upgrade process have left some counterparts with a dedicated suffix (e.g. .dpkg-dist, .dpkg-old, .ucf-old). Using the find or locate command can help to track them down. If they are no longer of any use, they can be deleted.

6.7.3.4. Dateien, die keinem Paket gehören

Die Debian-Richtlinie verlangt, dass Pakete keine Dateien hinterlassen, wenn sie bereinigt werden. Die Verletzung dieses Prinzips ist ein ernster Fehler und Sie werden ihm nur selten begegnen. Wenn doch, melden Sie ihn; und wenn Sie neugierig sind, können Sie das Paket cruft oder cruft-ng verwenden, um Ihr System auf Dateien zu überprüfen, die keinem Paket gehören.