8.41. Pakete aktualisieren

Ein Großteil der verfügbaren Software veraltet häufig in recht kurzer Zeit. Die Entwickler veröffentlichen neue Softwarepakete, die um Fehler bereinigt oder bei denen neue Funktionen ergänzt wurden. Das Debian-Team zur Qualitätssicherung hat daher mehrere Ebenen eingeführt, um einerseits mit der mitunter recht dynamischen Entwicklung der Software schrittzuhalten und andererseits sicherzustellen, dass brandneue Software möglichst keine andere, bereits bestehende und funktionierende Software in Mitleidenschaft zieht.

Dazu gehören die verschiedenen Veröffentlichungen wie unstable, testing und stable (siehe Abschnitt 2.10, „Veröffentlichungen“) sowie der damit festgelegte Zyklus, unter welchen Kriterien von einer Veröffentlichung zur nächsten diffundieren. Mitunter ist das ein recht langer Zeitraum. Desweiteren zählen die verschiedenen Mechanismen dazu, wie Softwarepakete aktualisiert werden. Die dabei verwendeten Begriffe „Update“ und „Upgrade“ sorgen regelmäßig für Verwirrung.

Im Allgemeinen beschreibt ein Update eine generelle Aktualisierung und Fehlerbereinigung eines Softwarepakets ohne Änderung der Schnittstelle und unter Beibehaltung des bereits bestehenden Funktionsumfangs. Ein Upgrade bezeichnet hingegen eine Aktualisierung eines Softwarepakets zugunsten einer Funktionserweiterung oder Erneuerung, was auch mit einer Veränderung der Schnittstelle einhergehen kann.

APT und aptitude kennen die beiden Unterkommandos update und upgrade in verschiedenen Schweregraden und verknüpfen damit wechselnde Funktionalitäten. Das Team um APT und aptitude hat die Bedeutung der Unterkommandos im Laufe der Entwicklung verändert und zudem auch neue Schlüsselworte hinzugefügt. Das zielt darauf ab, die Unterscheidung der Aktionen und deren Benutzung im Alltag zu vereinfachen. Erschwert wird das dadurch, dass sich bestehende Gewohnheiten i.d.R. nur Schritt für Schritt ändern und daher ihre Zeit brauchen, um sich durchzusetzen.

Die Paketverwaltung mittels apt-get, apt (ab APT 1.0) und aptitude kennt jeweils vier Unterkommandos zur Aktualisierung:

Jedes genannte Unterkommando beinhaltet eine spezifische Aktualisierung und wirkt sich entweder nur auf die Paketlisten (update) oder auf die Pakete selbst aus (install, upgrade, dist-upgrade, safe-upgrade und full-upgrade).

8.41.1. update

Das Unterkommando update steht in identischer Form und Bedeutung bei den drei Kommandos apt-get, apt und aptitude zur Verfügung. Es dient dabei nur zur Aktualisierung der Paketlisten, die Sie in der Datei /etc/apt/sources.list bzw. dem Verzeichnis in /etc/apt/sources.list.d hinterlegt haben. Ausführlich gehen wir darauf unter „Liste der verfügbaren Pakete aktualisieren“ in Abschnitt 3.13, „Liste der verfügbaren Pakete aktualisieren“ ein.

Mit diesem Unterkommando lösen Sie jedoch nicht die Aktualisierung der Pakete selbst aus — hierbei helfen Ihnen install, upgrade, dist-upgrade, safe-upgrade und full-upgrade.

8.41.2. install

Bisher haben wir Ihnen nur verraten, dass das Unterkommando install Pakete installiert. Es kann jedoch noch etwas mehr — nämlich das Aktualisieren einer bestehenden Installation. Beim Aufruf prüfen apt, apt-get und aptitude zunächst, ob das Paket bereits installiert ist. Falls nein, lösen Sie den üblichen Installationsvorgang aus. Falls das Paket jedoch schon da ist, prüfen die genannten Programme, ob eine neue Version des Paketes in den Paketlisten steht. Ist das der Fall, wird die bestehende Version entfernt und die neue Version eingespielt. Dabei werden sich verändernde Abhängigkeiten zu anderen Paketen mit berücksichtigt.

Aktualisierung eines Paketes mittels apt-get install

# apt-get install ruby2.1
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden Pakete werden aktualisiert (Upgrade):
  ruby2.1
1 aktualisiert, 0 neu installiert, 0 zu entfernen und 235 nicht aktualisiert.
Es müssen 277 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt.
Holen: 1 http://security.debian.org/ jessie/updates/main ruby2.1 amd64 2.1.5-2+deb8u6 [277 kB]
Es wurden 277 kB in 0 s geholt (354 kB/s).
Laden der Fehlerberichte … Erledigt
»Found/Fixed«-Informationen werden ausgewertet … Erledigt
Lese Changelogs... Fertig
(Lese Datenbank ... 257112 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../ruby2.1_2.1.5-2+deb8u6_amd64.deb ...
Entpacken von ruby2.1 (2.1.5-2+deb8u6) über (2.1.5-2+deb8u5) ...
Trigger für man-db (2.7.0.2-5) werden verarbeitet ...
ruby2.1 (2.1.5-2+deb8u6) wird eingerichtet ...
#

Bei diesem Schritt werden die zu installierenden Softwarepakete zunächst im Paketcache unter /var/cache/apt/archives/ abgelegt. apt prüft dabei, ob für die heruntergeladenen Pakete auch genügend Speicherplatz zur Verfügung steht. Ist das nicht der Fall, beschwert es sich bei Ihnen mit nachfolgender Ausgabe:

Fehlender Speicherplatz für den Paketcache. 

1734 aktualisiert, 716 neu installiert, 29 zu entfernen und 0 nicht aktualisiert.
Es müssen 3.292 MB an Archiven heruntergeladen werden.
Nach dieser Operation werden 3.195 MB Plattenplatz zusätzlich benutzt.
E: Sie haben nicht genug Platz in /var/cache/apt/archives/.

Um die Situation zu bereinigen, räumen Sie vor der Aktualisierung der Pakete den Paketcache auf (siehe „Paketcache aufräumen“ in Abschnitt 7.5, „Paketcache aufräumen“).

8.41.3. upgrade und safe-upgrade

Dem Unterkommando upgrade von apt-get entspricht safe-upgrade bei apt und aptitude. Sie aktualisieren damit alle installierten Pakete auf die neueste, verfügbare Version. Dabei werden keine potentiell gefährlichen Aktionen ausgeführt. Was dies genau heißt, unterscheidet sich dezent bei den drei Werkzeugen:

  • apt-get upgrade ist am konservativsten und installiert weder neue Pakete, noch entfernt es ggf. nicht mehr benötigte Pakete. Dies kann gelegentlich dazu führen, dass nicht alle Sicherheitsaktualisierungen eingespielt werden, wenn diese beispielsweise zum Beheben eines Sicherheitsproblemes zusätzliche Pakete nachsichziehen. Eine solche Situation trat 2008 auf, als eine Sicherheitsaktualisierung für das Paket openssh-server eine zusätzliche Abhängigkeit vom Paket openssh-blacklist hatte. Letzteres beinhaltet eine schwarze Liste von öffentlich bekannten privaten SSH-Schlüsseln.
  • apt safe-upgrade läßt hingegen das Installieren neuer Pakete zu. Ähnlich wie apt-get entfernt es dabei keine Pakete.
  • aptitude safe-upgrade geht im Gegensatz zu apt-get und apt noch einen Schritt weiter und erlaubt auch, dass Pakete entfernt werden. Das betrifft allerdings ausschließlich solche Pakete, die die Markierung „automatisch installiert“ tragen (siehe „Paketflags“ in Abschnitt 2.15, „Lokale Paketmarkierungen“). Über die Option --no-new-installs sorgen Sie dafür, dass auch aptitude beim Aktualisieren nur die Pakete erneuert, die keine weiteren, zusätzlichen Pakete nachsichziehen.

Eine Paketversion wird nicht erneuert und auf dem aktuellen Stand belassen, wenn eine Paketaktualisierung einen weiteren Abhängigkeitskonflikt hervorruft. Das betrifft nur den Fall, wenn ein Paket entfernt werden soll. aptitude berücksichtigt dabei nur Pakete, die nicht automatisch über Abhängigkeiten installiert wurden.

Überprüfung der Aktualisierung

Aufgrund der eingebauten Rückhaltemechanismen für potentielle Paketentfernungen werden diese Unterkommandos gerne für Sicherheitsaktualisierungen verwendet. Bitte überprüfen Sie nach deren Ausführung, ob auch alle Aktualisierungen tatsächlich eingespielt wurden. Sollte das nicht der Fall sein, schauen Sie nach, welche Pakete noch ausstehen und welche aufgetretenen Konflikte deren Aktualisierung verhindert haben.

Übersicht zu den aktualisierbaren Paketen erhalten

Welche Pakete aktualisiert werden können, teilen Ihnen APT und aptitude mit. Ausführlicher gehen wir darauf unter „Aktualisierbare Pakete anzeigen“ in Abschnitt 8.12, „Aktualisierbare Pakete anzeigen“ ein.

Sichtbar wird die Änderung auch im Paketnamen. Debian handhabt es so, dass bei Sicherheitsaktualisierungen (genannt security updates) dem Paketnamen eine spezielle Zeichenkette angefügt wird. Die erste Fehlerbereinigung für Debian 12 Bookwork ist +deb12u1, die zweite +deb12u2 (siehe dazu auch „Bennenung eines Debian-Paketes“ unter Abschnitt 2.11, „Benennung einer Paketdatei“).

8.41.4. dist-upgrade und full-upgrade

Was bei apt-get das Unterkommando dist-upgrade ist, heißt bei apt und aptitude hingegen full-upgrade. Beide Unterkommandos sind ähnlich zu upgrade und safe-upgrade.

Sie kommen in zwei Situationen zum Einsatz. Fall eins umfasst das Einspielen von Sicherheitsaktualisierungen, sodass auch neue Abhängigkeiten oder Paketkonflikte Beachtung finden, ohne dass dabei auf die Aktualisierung verzichtet wird. Fall zwei ist der Wechsel von einer Veröffentlichung einer Distribution zur nachfolgenden, so bspw. von stable nach unstable oder von Debian 8 Jessie nach Debian 9 Stretch (siehe auch „Distribution aktualisieren“ in Abschnitt 8.47, „Distribution aktualisieren (update und upgrade)“).

Die bisherigen Veröffentlichungen von APT und aptitude suggerierten insbesondere bei dem Begriff dist-upgrade inkorrekterweise primär eine Aktualisierung der genutzten Veröffentlichung. Deshalb wurde diese Funktionalität zunächst bei aptitude und später auch bei APT von dist-upgrade in full-upgrade umbenannt. Damit soll klargestellt werden, dass dieses Unterkommando nicht nur zum Wechsel von einer Veröffentlichung zur nächsten (vulgo „Distributions-Upgrade“) anwendbar ist.

In der Funktionalität bestehen kleine Unterschiede:

  • mit beiden Unterkommandos werden auch stets neue Pakete installiert, um die Paketabhängigkeiten zu erfüllen. Bei apt-get werden gegebenenfalls auch Pakete wieder entfernt, falls ein Paketkonflikt dies erforderlich macht.
  • In der Standardeinstellung von aptitude entfernt der Aufruf von aptitude full-upgrade nicht mehr gebrauchte, automatisch installierte Pakete. Dieses Verhalten können Sie in der Konfiguration von aptitude über das Element Aptitude::Delete-Unused abschalten.

8.41.5. Empfohlene Schrittfolge zur Aktualisierung von Paketen

Um Ihnen die Aktualisierung Ihrer Softwarezusammenstellung zu vereinfachen, haben wir nachfolgend eine Schrittfolge zusammengestellt, die Ihnen als Orientierung dienen kann. Sind Sie auf der Kommandozeile unterwegs, hilft Ihnen diese Abfolge bei den Werkzeugen apt-get, apt und aptitude weiter:

  1. Zunächst bringen Sie mittels apt-get update, apt update oder aptitude update die Paketlisten auf den neuesten Stand.
  2. Nun aktualisieren Sie mittels apt-get upgrade, apt upgrade oder aptitude safe-upgrade alle Pakete, die keine potentiell gefährlichen Paketoperationen zur Folge haben könnten.
  3. Als letzten Schritt führen Sie mit apt-get dist-upgrade, apt full-upgrade oder aptitude full-upgrade eine Erneuerung der Pakete durch, die bisher nicht erneuert wurden. Prüfen Sie bei der Frage "Y/n?" genau die vorgeschlagenen Paketoperationen.

Für das interaktive Arbeiten in der Text-Modus-Oberfläche von aptitude ist folgende Reihenfolge sinnvoll:

  1. Starten Sie zunächst aptitude mit der Option -u. Damit aktualisieren Sie zu Beginn die Paketlisten.
  2. Mit [ öffnen Sie die Äste „Aktualisierbare Pakete“ und „Sicherheitsaktualisierungen“, um zu sehen, welche Pakete zur Aktualisierung anstehen.
  3. Mit U merken Sie alle aktualisierbaren Pakete vor.
  4. Eventuelle Konflikte lösen Sie, indem Sie z.B. den ersten Lösungsvorschlag mit ! akzeptieren.
  5. Mit g sehen Sie die Vorschau der anstehenden Aktionen an.
  6. Drücken Sie nochmals g, um die vorbereiteten Aktionen auszuführen.

8.41.6. Aktualisierung mit Synaptic

Über die graphische Oberfläche von Synaptic (siehe Abschnitt 6.4.1, „Synaptic“) können Sie ebenfalls einzelne oder mehrere Pakete aktualisieren. Welche Aktualisierungen dabei berücksichtigt werden, legen Sie über die Einstellungen des Programms fest. Zu Auswahl stehen hier die Sicherheitsaktualisierungen und neue Paketversionen. Synaptic unterscheidet dabei nicht wie APT, apt und aptitude zwischen den verschiedenen Aktualisierungsstufen.

Folgende Schritte führen zu neuen Paketen über die graphische Oberfläche:

  1. Wählen Sie als erstes den Knopf StatusInstalliert (aktualisierbar) aus.
  2. Danach selektieren Sie das gewünschte Paket aus der Liste.
  3. Über den Menüeintrag PaketZum Aktualisieren vormerken fügen Sie dieses zu ihrer Vorauswahl hinzu.
  4. Über den Menüpunkt BearbeitenVorgemerkte Änderungen anwenden lösen Sie die Aktualisierung aus.

Ein Distributionswechsel ist nur über vorherige Änderung der Paketquellen möglich. Dabei ergänzen Sie zunächst eine weitere Paketquelle und beziehen danach die Aktualisierung (update).