So reparieren Sie eine beschädigte Paketinstallation (mysql)

15

Nach dem Upgrade auf Ubuntu 16.04 bemerkte ich, dass mysql umwerfende Fehler hatte. Überzeugt, es war eine kaputte Installation, habe ich versucht, eine Bereinigung von MySQL durchzuführen. Das schien nicht alles zu löschen, also habe ich es selbst versucht:

sudo rm -r /etc/mysql
sudo rm -r /usr/share/mysql-workbench
sudo rm -r /usr/share/mysql
sudo rm -r /usr/share/mysql-common

Das war ein Fehler. Versuchen Sie das NIEMALS. Jetzt wird MySQL nicht einmal richtig installiert. Ich habe versucht, die Abhängigkeiten neu zu installieren:

sudo apt-get install --reinstall $(apt-cache depends mysql-server | grep -Po 'Depends:\s+\K[^ ]+$' | tr '\n' ' ' )

Und die Pakete selbst:

sudo apt install mysql-workbench mysql-server --reinstall

Aber ich bekomme alle möglichen kryptischen Fehler, wie zum Beispiel:

sudo apt-get install --reinstall mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not         upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
E: Internal Error, No file name for mysql-server:amd64

Und deinstallieren

sudo apt-get remove mysql-common
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libmysqlclient20 : Depends: mysql-common (>= 5.5) but it is not going to be installed
 mariadb-client-core-10.0 : Depends: mariadb-common (>= 10.0.24-7) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Oder wenn ich neu konfiguriere

sudo dpkg --configure -a
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server

Oder wenn ich die Installation erzwinge:

sudo apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

Oder wenn ich eine Säuberung mache:

sudo apt-get -f purge mysql-server 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  mysql-server*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 159 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 348226 files and directories currently installed.)
Removing mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 mysql-server-5.7
E: Sub-process /usr/bin/dpkg returned an error code (1)

Kann apt nach einer Teilinstallation keine Wiederherstellung durchführen? Muss ich das Betriebssystem neu installieren?

Jonathan
quelle
Haben Sie versucht, einen einfacheren Ansatz zu machen sudo apt-get install --reinstall mysql?
Videonauth
Ich habe aktualisiert, um die Fehler von diesen
Jonathan
Vielleicht möchten Sie ins Gespräch kommen und wir sehen, ob wir das klären können.
Videonauth

Antworten:

22

Gehen Sie wie folgt vor, um die beschädigten Pakete zu entfernen:

sudo apt-get clean
sudo apt-get update
sudo dpkg -r mysql-client-5.7
sudo dpkg -r mysql-server-5.7
sudo dpkg -r libmysqlclient20:i386
sudo dpkg -r libmysqlclient20:amd64
sudo dpkg -r libmysqlclient18:amd64
sudo dpkg -r mysql-common
sudo dpkg -r mysql 

Danach neu installieren mit:

sudo apt-get install mysql mysql-client* mysql-server*
Videonauth
quelle
Vielen Dank!! Das Entfernen von Abhängigkeiten nacheinander ist die einzige Möglichkeit, apt-get stuck zu verlassen
stackMonk
+1 dafür. Vielen Dank, dass Sie den vollständigen Paketstapel erwähnt haben, der entfernt werden soll, damit MySQL ihn entfernt. Es hat auch bei mir funktioniert.
Parveen Verma
Auf meinem Ubuntu 18.04 hat der Versuch, mysqlclient zu entfernen (dritter Befehl wird ausgeführt) Folgendes hervorgerufen: Abhängigkeitsprobleme verhindern das Entfernen von mysql-client-5.7: mysql-server-5.7 hängt von mysql-client-5.7 ab (> = 5.7.26-0ubuntu0.18.04). 1). dpkg: Fehler beim Verarbeiten des Pakets mysql-client-5.7 (--remove): Abhängigkeitsprobleme - nicht entfernen Bei der Verarbeitung sind Fehler aufgetreten: mysql-client-5.7, aber beim Ausführen von sudo apt purge mysql-server mysql-server-5.7 mysql-server- core-5.7 ab hier askubuntu.com/questions/760724/16-04-upgrade-broke-mysql-server scheint die Instanz gelöscht zu haben
Carmine
Jetzt habe ich eine Reihe von Fehlern bekommen, als ich versucht habe, sudo apt install openjdk-8-jre openjdk-8-jdk zu installieren.
Carmine
Ich konnte den Prozess finden, der zuvor jeden meiner Versuche blockiert hat, das Update von mysql zu bereinigen. In der Tat habe ich eine in meinem System ausgeführte Instanz gestoppt und dann wie von der anderen verknüpften Lösung gelöscht. Danach habe ich sichergestellt, dass mein System aktualisiert wurde. Tatsächlich habe ich irgendwie herausgefunden, dass ich viele Updates vermisse. Danach scheint die Installation von java sdk, die sich selbst als mysql-Instanz benötigt, gut verlaufen zu sein
Carmine,
13

Vielen Dank an @Videonauth

sudo dpkg -r mysql-client-5.7
sudo dpkg -r mysql-server-5.7
sudo dpkg -r libmysqlclient20:i386
sudo dpkg -r libmysqlclient20:amd64
sudo dpkg -r libmysqlclient18:amd64
sudo dpkg -r mysql-common

Dann läuft:

sudo apt-get purge mysql\* mariadb\* libmysql\* libmariadb\*

Wenn irgendetwas fehlschlägt, führen Sie es einfach aus sudo dpkg -r <failedpackage>und entfernen Sie das Paket, das davon abhängig ist, falls DAS fehlschlägt. Wenn Sie das wiederholen, wird apt-get irgendwann wieder funktionieren.

Siehe auch Was ist der Unterschied zwischen dpkg und aptitude / apt-get?

Jonathan
quelle
Das Entfernen dieser libmysqlclient-Pakete, auch wenn andere Pakete darauf angewiesen sind, und das Löschen von allem haben dazu beigetragen. Obwohl ich jetzt mysql_upgrade-Fehler bekomme.
Skerit
Ich habe nie mysql_upgrade-Fehler bekommen. Möglicherweise müssen Sie jedoch noch mehr Pakete entfernen . Ich nehme an, es hängt davon ab, welches Paket beschädigt wurde. Es gibt eine Möglichkeit, nach allen installierten Paketen zu suchen, die sich auf mysql beziehen, aber ich vergesse, wie. Ich denke, es ist ein Befehl von dpkg list, der durch grep geleitet wird
Jonathan
9

Versuche dies,

Führen Sie diesen Befehl aus, um MySQL zu löschen, und ersetzen Sie Version 5.7 durch Ihre installierte Version

sudo apt purge mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7 mysql-server

Führen Sie dies aus, um Pakete zu bereinigen und zu aktualisieren

sudo apt update && sudo apt dist-upgrade && sudo apt autoremove && sudo apt -f install

Installieren Sie schließlich MySQL

sudo apt install mysql-server

das hat bei mir funktioniert.

Rahul
quelle
1
Dies funktionierte für mich, wo die ausgewählte Antwort nicht (es ist fehlgeschlagen sudo dpkg -r mysql-client-5.7)
Jeff-h
Danke! Ich habe stundenlang nach einer Lösung gesucht und dies ist die einzige Antwort, die funktioniert!
Mirza
1
Das hat bei mir funktioniert. Dieses Tutorial hat auch geholfen.
Waweru
4

Nachdem Sie mysqlwie oben gezeigt gelöscht haben, müssen Sie mysql folgendermaßen installieren:

sudo apt-get install mysql-common 
sudo apt-get install mysql-server

Wenn Sie auf diese Weise installieren, wird kein Installationsfehler angezeigt.

tomek
quelle
das funktioniert bei mir
user1735921
2

Ich kenne den genauen Grund nicht, aber all diese Methoden haben bei mir nicht funktioniert. In meinem Fall war das Verfahren, mit dem das Problem behoben wurde:

sudo apt-get purge mysql-*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get dist-upgrade

sudo rm -rf /etc/mysql
sudo rm -rf /var/lib/mysql*

und neu starten !

endlich konnte ich rennen sudo apt-get install mysql-server!

s1l3n0
quelle
Danke, es hat bei mir funktioniert
Nijo
1

Das hat bei mir funktioniert

sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get dist-upgrade

danach habe ich nochmal mysql mit installiert

sudo apt-get install mysql-server und jetzt funktioniert es gut.

Jayakrishnan Menon
quelle
0

Der Befehl sudo dpkg -r funktioniert bei mir nicht.

Früher habe ich sudo apt-get purge mysql-*alle freigegebenen Seiten deinstalliert und sie dann neu installiert

Ruijie Yuan
quelle