Wie entferne / installiere ich ein nicht vollständig installiertes Paket?


62

Ich habe neulich bsnes installiert und aus irgendeinem Grund ist die Installation fehlgeschlagen. Jetzt kann ich keine neuen Pakete aktualisieren, installieren oder im Grunde keine apt-get-Befehle ausführen, da alle versuchen, dieses kaputte Paket zu verarbeiten und fehlschlagen. Der Versuch, ein neues Paket zu installieren, führt zum selben Schicksal. Der Fehler, den ich erhalte, ist:

Setting up google-chrome-stable (33.0.1750.152-1) ...
/var/lib/dpkg/info/google-chrome-stable.postinst: 124: /var/lib/dpkg/info/google-chrome-stable.postinst: update-alternatives: not found
dpkg: error processing google-chrome-stable (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up bsnes (0.088-7) ...
/var/lib/dpkg/info/bsnes.postinst: 5: /var/lib/dpkg/info/bsnes.postinst: update-alternatives: not found
dpkg: error processing bsnes (--configure):
 subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
 google-chrome-stable
 bsnes
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ich habe auf Google und hier auf Ask Ubuntu gesucht, aber keine funktionierende Lösung gefunden. Die häufig vorgeschlagene Lösung besteht darin, Folgendes auszuführen:

sudo apt-get clean && sudo apt-get autoremove
sudo apt-get -f install
sudo dpkg --configure -a

Dies funktioniert jedoch nicht. Die apt-get-Befehle schlagen alle mit demselben Fehler wie oben fehl, und der Befehl dpkg hilft einfach nicht weiter. Die andere Sache, die sie oft vorschlagen, um es über Synaptic oder die Befehlszeile zu löschen, die auch fehlschlägt.

Danke für die Hilfe

Antworten:


60

Für fortgeschrittene Benutzer erfolgt die Verwendung auf eigene Gefahr.

Laut folgender Fehlermeldung:

subprocess installed post-installation script returned error exit status 127

Möglicherweise möchten Sie /var/lib/dpkg/info/[package_name].postinstalles bearbeiten und kommentieren (oder besser noch, versuchen Sie es zu verstehen und das Problem zu identifizieren) und versuchen Sie es dann apt-geterneut.

Beachten Sie, dass in dieser speziellen Frage die Meldung "Post-Installation" betrifft, jedoch stattdessen "Pre-Removal" oder "Post-Removal" erwähnt werden könnte (in welchen Fällen die Erweiterung der zu bearbeitenden Datei gewesen wäre .prermoder .postrm). .


2
Eigentlich ist das die beste Methode. Neuinstallation dpkghilft nicht immer.
Danatela

2
Tausend Dank. Ich musste reparieren, /var/lib/dpkg/info/[package_name].prermaber Ihr Beitrag gab mir die richtige Richtung. Auf jeden Fall für fortgeschrittene Benutzer, das ist riskant !
sмurf

Die beste Antwort. Vielen Dank! Korrekturen .prermund .postrmDateien beheben das Problem.
Fixiereinheit

42

Außer denen, die Sie bereits gepostet haben, gibt es nur wenige andere Befehle, die hilfreich sein können.

  • Autoclean löscht das lokale Repository der abgerufenen Paketdateien.

    sudo apt-get autoclean
    
  • Installation / Deinstallation von Paketen erzwingen. ☠Vorsichtig verwenden

    sudo apt-get --force-yes install <pkgname>
    

    und

    sudo apt-get --force-yes remove <pkgname>
    

Wie immer können Sie mit dpkgPakete installieren, entfernen und löschen.

  • Installieren

    sudo dpkg -i <pkgname>
    
  • Entfernen

    sudo dpkg -r <pkgname>
    
  • Reinigen

    sudo dpkg -P <pkgname>
    

Sowohl der Befehl dpkg als auch der Befehl apt-get --force-yes geben den gleichen Fehler zurück, den ich zuvor erhalten habe. Autoclean gibt keinen Fehler zurück, scheint aber auch nichts mit den zwei kaputten Paketen zu tun.
Bijak

@ Bijak Sie müssen sicherlich versucht haben zu bsnesspülen .Haben Sie?
Registrierter Benutzer

Ja, mit dpkg -P, apt-get purge und mit Synaptic
Bijak

Posten Sie die Ausgabe vondpkg -l |grep bsnes
Registered User

rF bsnes 0.088-7 amd64 Genaue SNES / SuperFamicom-Emulator
Bijak

27

Also, nach mehr googeln und wirklich sorgfältig durchlesen der Fehlermeldungen scheint es, dass dpkgneu installiert werden musste.

sudo apt-get install --reinstall dpkg

Was darauf hinwies, dass dies das Problem war (wenn jemand dies sucht und sieht), update-alternatives: not foundwar das in der Fehlermeldung. Sobald dpkg neu installiert wurde, wurden die anderen Pakete normal automatisch installiert.


3
Warum ist die einzig richtige (und akzeptierte) Antwort in der Liste so weit unten mit weniger als ⅓ der Stimmen der Top-Antwort? +1
David Foerster

zum einen: weil es nicht für pakete funktioniert, die nicht mehr heruntergeladen werden können "die neuinstallation von linux-image-extra-4.4.0-65-generic ist nicht möglich, sie kann nicht heruntergeladen werden."
Joe

3
Dies ist wahrscheinlich die am wenigsten wahrscheinliche Lösung für alle , hier basierend kommen auf dem Titel der Frage. Es gibt jedoch viele Gründe, warum dieses Problem auftreten kann. Daher werden viele Lösungsvorschläge "Das funktioniert für mich" vorliegen.
Michael

Das funktioniert eigentlich nicht.
NelsonGon

15

Sie können die Paketdatei in diesem /var/lib/dpkg/info/Pfad entfernen und die Quelle aktualisieren.

sudo rm /var/lib/dpkg/info/[package_name].*
sudo dpkg --configure -a
sudo apt-get update

Installieren Sie dann Ihr Paket neu sudo apt-get install [package_name]

Doc


4
Eigentlich sollte man es besser gebrauchen sudo rm /var/lib/dpkg/info/[pakege_name].*. Andernfalls entfernen Sie auch Pakete, die mit demselben Namen beginnen. Trotzdem, danke dafür, es war die einzige Lösung, die für mich funktioniert hat
smac89

13

Wenn alle Stricke reißen. Ich habe zuerst das Verzeichnis geändert in:

cd /var/lib/dpkg/info

dann habe ich alles entfernt mit .postinst:

sudo rm *.postinst

Aktualisieren Sie dann das Repository

sudo apt-get update

dann hat sich alles normalisiert, als ich es tat:

sudo apt-get --force-yes install openjdk-7-jre-headless

6
Dadurch werden alle Skripts nach der Installation entfernt, nicht nur die des betroffenen Pakets. Ein bisschen zu übereifrig meiner Meinung nach. -1
David Foerster

Wenn es einfach ist, nur das bestimmte Post-Install-Skript zu identifizieren und zu entfernen, das ein Problem verursacht, kann dies eine sehr bequeme Möglichkeit sein, ein fehlerhaftes Paket zu entfernen.
Ian Mackinnon

Nach einem Albtraum mit Kernel-Problemen wurde das Problem durch Umbenennen der .postinst-Datei nur des betroffenen Kernels behoben
Andy,

5

Wenn alles andere fehlschlägt, können Sie das Paket manuell durch entfernen dpkg. Laufen sudo dpkg -P bsnessollte spülen bsnes.


2
dpkg: error processing package libcuda1-340 (--purge): package is in a very bad inconsistent state; you should reinstall it before attempting a removal
Endolith

2

In meinem Fall hat es apt-get install -ffunktioniert. Ich habe die mysql-workbench-community installiert

Zuvor versucht apt autoclean

Ich habe den dpkg-Fehler aufgrund einiger fehlender Abhängigkeiten gesehen, die durch Installation im erzwungenen Modus behoben werden konnten (Installieren von Abhängigkeiten).


0
sudo apt-get install -f --reinstall coreutils init-system-helpers

Nachdem Sie oben ausgeführt haben, können Sie alle Pakete wie gewohnt installieren / aktualisieren / entfernen / bereinigen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.