8.37. Pakete erneut installieren

Manchmal gehen Dateien kaputt oder werden unbeabsichtigt gelöscht. Sei es bei einer Reparatur des Dateisystems, durch Bit-Dreher auf dem Speichermedium oder durch „Unfälle“ beim Drag-and-Drop. Auf der Kommandozeile passieren mitunter auch Tippfehler, die im Nachhinein nicht mehr reparabel sind.

In anderen Fällen möchten Sie eine Software temporär deinstallieren, um diese später wieder zu installieren. Es ist dabei nicht unüblich, dass bestehende, selbst angepasste Konfigurationsdateien später wiederverwendet werden. Auch das Ersetzen von bereits veränderten Konfigurationsdateien durch ihre Originale aus dem Paket wird oft durch eine Wiederinstallation versucht – nur leider hat dies nur selten den erwünschten Effekt. Warum das nicht immer so funktioniert wie erhofft, erklären wir gleich.

Alle diese Fälle haben gemeinsam, dass ein Paket erneut installiert wird. Dabei unterscheiden wir hier drei verschiedene Ausgangszustände:

Jeder dieser Fälle hat dabei seine Eigenheiten. In den ersten beiden Fällen können Sie das Paket ganz einfach auf den üblichen Wegen installieren. Welche Besonderheiten Sie dabei dennoch beachten sollten, lesen Sie in den folgenden Abschnitten.

Im letztgenannten Fall teilen Ihnen die meisten Programme, die auf APT basieren, mit, dass besagtes Paket bereits installiert ist. Deswegen braucht es dort den expliziten Hinweis, dass das Paket nochmals installiert werden soll. Zum Einsatz kommt dabei meist die Option --reinstall (APT) oder das Unterkommando reinstall (aptitude, cupt).

8.37.1. Wiederinstallieren vollständig entfernter Pakete

Wurden Pakete mit der Option --purge vollständig entfernt (siehe dazu Abschnitt 8.41, „Pakete deinstallieren“), so ist dieser Fall in vielen Fällen trivial und ohne jegliche Besonderheiten.

Die einzige Ausnahme davon bilden Pakete, die Teile ihrer Konfiguration über debconf erfragen. Das Kommando dpkg --purge entfernt alle Bestandteile außer den in der Debconf-Datenbank gespeicherten Antworten des zu entfernenden Pakets. Dies kann dazu führen, dass Ihnen die debconf-Fragen zur Konfiguration des Pakets nicht wieder gestellt werden. Im Endeffekt wird die gleiche Konfiguration wie bei der vorherigen Installation des Pakets generiert.

In diesem Fall hilft Ihnen der Aufruf von dpkg-reconfigure mit dem Paketnamen als Parameter. In manchen Fällen reicht dies alleine schon aus, um eine verkorkste Konfiguration wieder hinzubiegen. Mitunter kommen Sie damit um ein gänzliches Entfernen und Wiederinstallieren des Pakets herum. Ausführlich gehen wir dazu unter „Pakete konfigurieren“ in Abschnitt 8.38, „Pakete konfigurieren“ ein.

8.37.2. Wiederinstallieren von Paketen mit vorhandenen Konfigurationsdateien

Auch dieser Fall funktioniert meist ganz unspektakulär und so wie Sie es erwarten. Neben den bereits oben erwähnten Stolperstellen kommt jedoch in diesem Fall noch hinzu, dass dpkg vorherige Änderungen an den noch vorhandenen Konfigurationsdateien beachtet. Falls sich diese Dateien in der aktuell zu installierenden Paketversion nicht gegenüber denen in der vorher installierten Variante geändert haben, fragt dpkg gar nicht nach, ob es diese mit den Varianten aus dem Paket ersetzen soll. Dies gilt auch analog für Konfigurationsdateien, die von Ihnen als Administrator gelöscht wurden. dpkg sieht dies als Absicht an, respektiert daher Ihre Entscheidung und installiert die entsprechende Konfigurationsdatei aus dem neuen Paket ebenfalls nicht wieder.

Wurde eine Wiederherstellung erwartet, so muss das Paket vorher von Ihnen mit purge (dpkg --purge, apt-get purge oder aptitude purge) entfernt werden. Damit installiert dpkg die Konfigurationsdateien aus dem Paket erneut.

8.37.3. Wiederinstallieren bereits installierter Pakete

Der dritte Fall unterscheidet sich von den ersten beiden dahingehend, dass er einerseits erzwungen werden muss und andererseits, dass die gleiche Version wie die bereits vorhandene wieder installiert wird. Andernfalls würde es sich ja um eine Paketaktualisierung handeln.

Diese Vorgehensweise wird meist dann verwendet, wenn – wie zu Beginn dieses Abschnitts erwähnt – eine oder mehrere Dateien eines installierten Pakets kaputt gegangen sind und diese wiederhergestellt werden sollen. Oft ist dies sogar einfacher und schneller, als das Backup zu bemühen.

Ist die entsprechende Paketdatei noch in /var/cache/apt/archives/ vorhanden, so reicht zum Wiederinstallieren ein simples dpkg -i mit der richtigen Datei als Parameter. Da das Paket bereits installiert war, müssen auch alle Abhängigkeiten bereits vorliegen, und es ist nicht notwendig, Abhängigkeiten nochmals aufzulösen.

Muss die Paketdatei neu heruntergeladen werden, so nutzen Sie besser einen der Aufrufe apt-get install --reinstall, aptitude reinstall oder auch cupt reinstall. Zusätzlich benötigen Sie im Aufruf den entsprechenden Paketnamen als Parameter.

Ist das Paket in der aktuell installierten Version jedoch in keinem der dem System bekannten APT-Repositories mehr verfügbar, wird der Vorgang mit einer Fehlermeldung abgebrochen. Desweiteren gelten auch in diesem Fall die gleichen Verhaltensweisen bzgl. geänderter Konfigurationsdateien und debconf-Fragen wie in den beiden vorgenannten Fällen.

8.37.4. Typische Stolperfallen bei Wiederinstallieren mehrerer Pakete

Die vermutlich häufigste Stolperfalle beim Wiederinstallieren von Paketen ist, dass Sie das falsche Paket erwischen. Dies passiert im Alltag leider häufiger, als Sie das erwarten würden.

Sind Dateien kaputtgegangen, bei denen Sie sowieso nicht genau wissen, aus welchem Paket diese stammen, so nehmen Sie flink dpkg -S zu Hilfe (siehe Abschnitt 8.22, „Paket zu Datei finden“). Damit ermitteln damit das dazugehörige Paket im Handumdrehen.

Wissen Sie den Paketnamen jedoch nur ungefähr, wird oft bereits der erste Versuch, das Paket mit dem Namen der Software zu Reinstallieren, ein Fehlschlag. Gerade die größeren Software-Suiten bestehen häufig aus mehreren Paketen und das Paket mit dem Namen der Suite ist meist nur ein Metapaket ohne eigentlichen Inhalt. Zu bedenken ist außerdem, dass eine Wiederinstallation eines bereits installierten Pakets dessen Abhängigkeiten unangetastet lässt.

Ein schönes Beispiel für einen solchen Fall ist die Server-Software namens Samba. Haben Sie z.B. die Datei /etc/pam.d/samba zerschossen, ist die Versuchung groß, einfach das Paket namens samba mit dpkg --purge zu deinstallieren und gleich danach wieder zu installieren. Leider wird die Datei danach unverändert sein, da sie nicht zum Paket samba gehört, sondern zu dessen Abhängigkeit samba-common. Deswegen hilft es Ihnen, im Zweifelsfall doch lieber erst dpkg -S zu bemühen und nachzuschauen, in welchem Paket eine Datei wirklich enthalten ist, bevor Sie zu Fluchen anfangen.