Wie man kaputte synaptische Updates behebt: "Paket ist in einem sehr schlechten inkonsistenten Zustand"

15

Ich habe einen Dell Mini9 mit Ubuntu 8.10. Eines Tages hatte ich die gute Idee, einen LAMP-Stack zu installieren. Ich hatte Probleme bei der Installation von MySQL 5.0. Ich kann mich nicht an den Fehler erinnern, aber seitdem alle Versuche, Update-Manager, Synaptic oder Apt-Get auszuführen, scheitern mit einem Fehler über MySQL-Server-5.0: "Das Paket ist in einem sehr schlechten inkonsistenten Zustand."

Ich habe es versucht apt-get remove mysql-server-5.0und auch, installaber ohne Glück. Beide schlagen mit demselben Fehler wie unten fehl. Wie kann ich das beheben?

$ sudo apt-get entferne mysql-server-5.0
Paketlisten lesen ... Fertig
Abhängigkeitsbaum erstellen       
Statusinformationen werden gelesen ... Fertig
Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:
  dhcdbd libisc32
Verwenden Sie "apt-get autoremove", um sie zu entfernen.
Die folgenden Pakete werden ENTFERNT:
  MySQL-Server-5.0
0 aktualisiert, 0 neu installiert, 1 zu entfernen und 164 nicht aktualisiert.
1 nicht vollständig installiert oder entfernt.
Nach diesem Vorgang werden 85,4 MB Festplattenspeicher freigegeben.
Möchten Sie fortfahren [J / N]? 
dpkg: Fehler bei der Verarbeitung von mysql-server-5.0 (--remove):
 Paket ist in einem sehr schlechten inkonsistenten Zustand - das sollten Sie
 Installieren Sie es erneut, bevor Sie versuchen, es zu entfernen.
Bei der Verarbeitung sind Fehler aufgetreten:
 MySQL-Server-5.0
E: Unterprozess / usr / bin / dpkg hat einen Fehlercode zurückgegeben (1)
Spoulson
quelle
Verwenden Sie <pre> für die Bildschirmausgabe, wenn keine Syntaxhervorhebung erforderlich ist.
John Oxley

Antworten:

19

Keine der anderen Antworten funktionierte für mich bei Maverick.

In meinem Fall habe ich festgestellt, dass dies funktioniert:

sudo rm /var/lib/dpkg/info/flashplugin-nonfree.prerm

sudo dpkg --remove --force-remove-reinstreq flashplugin-nonfree

(Ersetzen von "flashplugin-nonfree" durch den Namen des beschädigten Pakets und Ersetzen von "prerm" durch den Typ des fehlgeschlagenen Skripts - in meinem Fall "postrm", das Skript zum Entfernen.)

Und sie sagen, dass Ubuntu einfach zu bedienen ist !! murren murren

Robin Green
quelle
--purge ist besser, gebrochene deps fallen zu lassen
stepancheg
1
Ich habe stundenlang nach einer Lösung für ein ähnliches Problem gesucht, und dies ist die einzige, die funktioniert hat. Vielen Dank.
LukeGT
6

Ich hatte genau das gleiche Problem mit einer MySQL-Installation. Sie müssen reinigen die packge. Durch einfaches Entfernen eines Pakets werden die mit ihm gelieferten Konfigurationsdateien nicht entfernt.

Ich beziehe mich auch auf mysql-server-5.0 , stelle jedoch fest, dass es ein Wrapper-Paket mysql-server gibt , das immer auf die neueste Version verweist. dh wenn Sie nach der Installation von mysql-server fragen , sollte apt-get Ihnen mitteilen, dass dies von mysql-server-5.0 abhängt, und beide installieren. Wenn Sie das mysql-server- Paket auf dem System haben, sollten Sie sicherstellen, dass dies auch nicht mehr der Fall ist, bevor Sie versuchen, es erneut zu installieren.

  • Stellen Sie sicher, dass der Mysql-Server (Mysqld) nicht ausgeführt wird. Wenn es so ist, bring es runter:

    sudo /etc/init.d/mysqld stoppen

  • Überprüfen Sie, ob Pakete von mysql-server-5.0 abhängen:

    sudo apt-cache hängt von mysql-server-5.0 ab

    In diesem Fall müssen Sie zum Deinstallieren die Option --force verwenden .

  • Bereinigen Sie das Paket (einschließlich der Option --force , abhängig von # 2)

    sudo apt-get --purge remove --force mysql-server-5.0

  • Stellen Sie sicher, dass die Installationsdateien auch durch Ausführen gelöscht werden

    sudo apt-get autoclean
    sudo apt-get autoremove

  • Installieren Sie das Serverpaket erneut

    sudo apt-get installiere mysql-server-5.0

Dies sollte hoffentlich Ihr Problem beheben. Das Paket kann jedoch immer noch beschädigt sein, wenn Sie Änderungen an Dateien vorgenommen haben, die aus dem Paket mysql-common stammen .

mysql-common ist das Basispaket, das sowohl von Client- als auch von Serverkomponenten verwendet wird. Wenn die Dinge nicht mehr funktionieren, versuchen Sie, dieses Paket erneut zu installieren. Es wird definitiv Pakete geben, die davon abhängen; überprüfen Sie mit # 2 oben. Bereinigen Sie mysql-server, bevor Sie mysql-common erneut installieren . Vergessen Sie auch nicht, mysql-common neu zu installieren , da Ihr System sonst sehr kaputt geht.

Nagul
quelle
1

Vielleicht möchten Sie es aptitudeversuchen, um Abhängigkeiten besser zu handhaben:

sudo aptitude remove mysql-server-5.0
innaM
quelle
Der Fehler hier ist dpkg's, deshalb denke ich nicht, dass aptitudees notwendigerweise besser laufen würde. Verstehen Sie mich nicht falsch, ich bin alles für aptitudevorbei apt-get, aber am Ende des Tages übergeben sie beide die eigentlichen Details dpkg(was Sie gerne hören werden, wurde ursprünglich in Perl implementiert).
Telemachus
;-) Ich dachte nur, dass es einen Versuch wert sein könnte.
13.
0

Versuchen

sudo dpkg -i reconfigure mysql-server-5.0
sudo apt-get remove --force mysql-server-5.0

Wenn ein anderes Paket kaputt ist, probieren Sie apt-get remove --forcees ebenfalls aus.

John Oxley
quelle
0

Der dpkgFehler, den Sie dort haben, deutet darauf hin, dass das Problem auftritt, wenn dpkgversucht wird, das Paket tatsächlich zu entfernen. (Am Ende des Tages übergeben apt-getund Synapticdergleichen die eigentliche Arbeit an dpkg.)

Haben Sie versucht , genau das zu tun , was die Botschaft sagt und wieder -Installation zuerst?

apt-get install --reinstall mysql-server-5.0

So albern es auch klingen mag, wenn dpkgwährend des Entfernungsprozesses ein Engpass auftritt (da einige Dateien, die entfernt werden sollen, in der Zwischenzeit verloren gegangen sind) , kann eine Neuinstallation und anschließende Entfernung manchmal Abhilfe schaffen. Stellen Sie sicher, dass mysqles nicht ausgeführt wird, bevor Sie versuchen, es zu installieren oder zu entfernen, wie es Nagul vorschlägt .

Telemachus
quelle
0

dpkg -r --force-remove-reinstreq <package> Entfernt ein Paket, ohne zu überprüfen, ob eine Neuinstallation erforderlich ist.

Danach sollten Sie in der Lage sein, das Paket mit Ihrem bevorzugten Paketmanager erneut zu installieren.

Jaime Soriano
quelle
0

Ich hatte dieses Problem mit dem Postboten. /Etc/init.d/mailman mit gelöscht

rm /etc/init.d/mailman

repariert :)

Stéphan Champagne
quelle