Gefällt dir dieser Artikel?

apt-get / dpkg : kaputte Pakete zwangs-entfernen

erschienen in der Kategorie Software, am 20.05.2017
Schnatterente
Es kommt ganz selten vor, aber manchmal passiert es dann eben doch: Die Paketverwaltungs- und Installationswerkzeuge apt-get und dpkg verreißen einen Installationsprozess und erzeugen damit einen Abhängigkeitskonflikt oder eine korrupte Installation und überführen das sonst so resolute Linux damit in einen Zustand, der sich mit den üblichen Mitteln nicht mehr so einfach bereinigen lässt.

Ich musste kürzlich die Erfahrung machen, dass sich ein Paket auf einem Debian Jessie Server ohne erkennbaren Grund nicht installieren ließ. Das perfide an der Situation war, dass mir dpkg dabei nicht einmal einen Fehler servierte. Es blieb einfach beim Entpacken eines (170 Kilobyte kleinen) Paketes hängen. Nach 30 Minuten habe ich den Prozess dann gekillt und es noch zwei Mal versucht, wieder ohne Erfolg.

Der Effekt war nun, dass ich auf dem System gar nichts mehr installieren konnte. Debian gibt sich in solchen Situationen ja sehr zickig und will, dass man das zuvor verursachte Chaos erst einmal beseitigt, bevor man sich neuen Installationen widmet.

Das nach dem Abbrechen von Installationen übliche Ausführen von
# dpkg --configure -a
# apt-get -f install

um das System wieder in einen sauberen Zustand zu bringen, führte dummerweise nur dazu, dass ich wieder in die oben beschriebene Falle rannte und der Installationsprozess beim Entpacken des gleichen Paketes hängen blieb. Mist.

Ein
# apt-get purge <package>

funktionierte ebenfalls nicht. Debian verweigerte die Deinstallation, da das Paket nicht sauber installiert war. Und damit hatte Debian auch recht, denn der unterbrochene Entpackungsprozess hatte die alte Version des Pakets bereits zur Hälfte überschrieben, sodass es quasi nicht mehr zu gebrauchen war.

Nun kann einem das "Installier die Software erst einmal ordentlich, damit du sie auch sauber deinstallieren kannst!"-Prinzip allerdings böse vor die Füße fallen, wenn sich ein Paket einfach nicht installieren lassen will.

Ich musste dann zu härteren Mitteln greifen. Mit dem folgenden Befehl konnte ich dpkg dazu zwingen, das besagte Paket zu löschen, ohne dabei auf eine valide Installation zu achten:
# dpkg --remove --force-remove-reinstreq <package>


Danach habe ich wieder die alte Version des Paketes installiert und apt verboten, es auf die neue Version upzudaten (apt-mark hold <package>).

Wer also auch mal vor dem Problem steht, dass sich nach einer gescheiterten Installation nichts mehr machen lässt, für den ist der Parameter "--force-remove-reinstreq" ein ganz heißer Tipp.
Aber ACHTUNG: Man sollte das wirklich erst anwenden, wenn alle anderen Problembehebungsversuche gescheitert sind. Der Befehl untergräbt die sonst sehr sinnvollen Schutzmaßnahmen des Paketmanagers und kann bei falscher Verwendung (insbesondere bei der Deinstallation von wichtigen Bestandteilen des Betriebssystems) auch viel Schaden anrichten.

Richtig eingesetzt führt er aber zu dem schönen Effekt, dass man wieder Herr (root) des Systems ist. :)

Geschnatter

3 Kommentare, selbst mitschnattern << < Seite 1/1 > >>
Thomas, am 20.05.2017 um 19:24 Uhr
Danke für diesen interessanten Hinweis.
Diese Option kannte ich noch nicht. Ich hatte exakt das gleiche Problem mit dem Entpacken auch schon einmal. Damals habe ich in mühevoller Kleinarbeit ein Dummy-Paket mit dem gleichen Namen erstellt und dieses dann händisch mit dpkg -i installiert. Da sich das Dummy-Paket sauber installieren ließ, konnte ich es danach auch sauber wieder entfernen.
Deine Methode geht da wesentlich schneller.
Pat, am 20.05.2017 um 21:01 Uhr
Gibt auch noch --force-all, müsste auch funktionieren.
chris_blues, am 20.05.2017 um 21:58 Uhr
Ja, als Debiannutzer kommt das alle Jubeljahre mal vor. Inzwischen benutze ich nur noch konsequent aptitude, nachdem mir mal der Tip gegeben wurde (so vor nem Jahr vllt), daß das wohl (noch) besser mit komischen Konflikten zurande kommt. Seitdem hab ich sowas nicht mehr gesehen. Hab aber vllt auch nur Glück gehabt...

Ich kannte die Methode nämlich auch noch nicht und habe mir damit das ganze System zerstört. Dann kam der Entschluß es mal mit besagtem aptitude zu versuchen. Ist zwar langsamer als apt-get & Co, aber bisher fühlt sichs tatsächlich sauberer an. Ich hoffe, das bleibt auch so. :o)