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
).
Wurden Pakete mit der Option --purge
vollständig entfernt (siehe
dazu Abschnitt 8.43, „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.40, „Pakete konfigurieren“ ein.
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.
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.
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.24, „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.