MySQL-Server kann nach der Bereinigung nicht neu installiert werden

MySQL-Server kann nach der Bereinigung nicht neu installiert werden

Ich habe vor Kurzem eine Neuinstallation von Ubuntu 16.04 durchgeführt. Außerdem habe ich mysql-serverund mysql-client(deren Standardversion 5.7.12) über installiert apt-get install.

Da 5.7.12 einige Probleme aufwies, habe ich beschlossen, es zu deinstallieren. Ich habe es apt-get remove mysql-server mysql-clientzuerst versucht, aber festgestellt, dass Artefakte wie /etc/mysqlund /var/lib/mysqlnicht entfernt wurden.

Ich habe es dann versucht apt-get --purge removed mysql-server mysql-client, aber immer noch kein Unterschied.

Also habe ich sie manuell entfernt (über rm -rf). Außerdem habe ich alle *mysql*Dateien darunter manuell entfernt /usr/, die aus mysql-*Abhängigkeitspaketen wie stammten mysql-common.

Wenn ich es jetzt jedoch erneut installieren möchte mysql-server and -client, stelle ich fest, dass dies nicht möglich ist.

Tatsächlich befinde ich mich jetzt in einem Zustand, in dem ich weder apt-get remove mysql-servernoch kann apt-get install mysql-server!

Wie kann ich die Situation beheben, in der ich mich befinde? Wenn die Metadaten meines lokalen Paketrepositorys beschädigt wurden, wie repariere ich sie?

Ich würde es hassen, das ganze gesegnete Betriebssystem mit allen meinen anderen Apps und der Umgebung noch einmal neu zu installieren, nur wegen mysql-server.

Folgendes ist beispielsweise der Fehler, den ich erhalte, wenn ich versuche, zu entfernen mysql-server:

$ apt-get remove  mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7
Use 'apt autoremove' to remove them.
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] 
(Reading database ... 237601 files and directories currently installed.)
Removing mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)

Und beim Installationsversuch erhalte ich diese Fehlermeldung:

$ apt-get -f install mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  mysql-server
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/10.1 kB of archives.
After this operation, 159 kB of additional disk space will be used.
Selecting previously unselected package mysql-server.
(Reading database ... 237599 files and directories currently installed.)
Preparing to unpack .../mysql-server_5.7.12-0ubuntu1_all.deb ...
Unpacking mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)

Hier ist die Ausgabe von apt-get install -f:

$ apt-get install -f 
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) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)

Antwort1

Bearbeitet 10. Januar 2017: Dies ist eine umfassende Überprüfung dieses Beitrags, um schwerwiegende Probleme in diesem Beitrag zu beheben.

Der Fehler im Herzen

Das Problem besteht darin, dass sich das Paket noch in einem halb installierten und halb konfigurierten Zustand auf dem System befindet und explizit entfernt werden muss.

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)

Es besagt eigentlich, dass das Paket mysql-server-5.7eine Abhängigkeit von ist mysql-server, bereits installiert, aber nicht konfiguriert ist. Sie müssen purgees also verwenden, um die von hinterlassenen Brotkrümel zu entfernen mysql-server-5.7.

sudo apt purge mysql-server mysql-server-5.7

Begründung

Wenn Sie Software mithilfe von installieren apt, werden auch Abhängigkeiten automatisch für Sie verwaltet.

Wenn Sie bestimmte Pakete entfernen, werden diese Abhängigkeiten möglicherweise nicht mehr verarbeitet. Im Fall dieses Beitrags ist diese Abhängigkeit mysql-server-5.7.

Sie können den Status eines Pakets überprüfen, indem Sie den folgenden Befehl eingeben.

dpkg-query -l [package-name-here]

Normalerweise können Sie anhand des Codes unoder links neben dem Paketnamen erkennen, ob es sich tatsächlich um ein defektes Paket handelt.rc

Als dieses Problem auftrat, trat es bei libapache2-mod-phpund auf libapache2-mod-php7.0. Dies war meine Ausgabe.

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                        Version            Architecture       Description
+++-===========================-==================-==================-============================================================
un  libapache2-mod-php          <none>             <none>             (no description available)

In meinem Fall wurde behauptet, der Status meines Pakets sei unbekannt und es (der Code un) sei nicht auf meinem System installiert.

Wenn Sie etwas anweisen apt, removekönnen Pakete, Konfigurationsdateien und andere Elemente übrig bleiben, die bei automatisierten Installationen problematisch sein können.

Wenn Sie jemandem sagen, aptdass purgeer etwas tut, entfernen Sie am besten alle Brotkrümel, die removemöglicherweise zurückgeblieben sind.

Ich hatte ursprünglich angenommen, dass der Prozess noch läuft, aber höchstwahrscheinlich war er inaktiv oder tot.

Um festzustellen, ob der Dienst die Entfernung Ihres Pakets behindert, können Sie am besten zuerst den jeweiligen Dienst überprüfen.

1) Untersuchung des mysqlDienstes

Mithilfe des Systemfehlers, den wir von erhalten haben apt, können wir systemctlden Fehler tatsächlich untersuchen, indem wir den Status des mysqlDienstes überprüfen

sudo systemctl status [pattern]

In unserem Fall möchten wir sehen, ob MySQL läuft, also können wir Folgendes eingeben:

systemctl status mysql.service

Wenn der Dienst ausgeführt wird, sollten Sie diese Ausgabe sehen.

systemctl status mysql
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2017-01-10 23:10:06 EST; 1h 3min ago
 Main PID: 1206 (mysqld)
   CGroup: /system.slice/mysql.service
           └─1206 /usr/sbin/mysqld

Hinweis: Wenn der Dienst nicht mehr verfügbar ist, wird eine kurze Meldung angezeigt, die Sie darüber informiert, dass kein Dienst mit diesem Namen ausgeführt wird. Fahren Sie dann mit Schritt 3 fort.

2) Beenden des mysqlDienstes mitsystemctl

serviceHinweis: [Muster] muss der von oder aufgelistete Name sein initctl. Ich verwende patternes, weil es Regex-Matching verwendet. Seien Sie also vorsichtig, wenn Sie das Argument systemctlverwenden müssen .kill

sudo systemctl stop [pattern]

wobei patternder Name des MySQL-Daemons/-Dienstes ist. Wenn Stoppen nicht funktioniert, versuchen Sie

sudo systemctl kill [pattern]

Zum Beispiel

sudo systemctl stop mysql

3) Deinstallieren/Bereinigenmysql

Wenn Sie eine vollständige Bereinigung durchführen müssen, stellen Sie zuerst sicher, dass der Dienst oder Prozess gestoppt wird, und achten Sie dann darauf, dass Sie die richtigen Dateien und Verzeichnisse entfernen!

Hinweis: Stellen Sie sicher, dass Sie die richtige Version verwenden mysql. Wenn Sie beispielsweise 5.5 verwenden, passen Sie die Versionsnummer entsprechend an.

WARNUNG:die folgenden Schritte werden Ihre Daten löschen! (der erste Befehl muss ausgeführt werden, um ein Backup zu erstellen)

Quelle:Wie deinstalliere ich MySQL?

tar -zcvf ~/msql_backup.tar.gz /etc/mysql /var/lib/mysql 
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-5.7 mysql-client-core-5.7
sudo rm -rfv /etc/mysql /var/lib/mysql
sudo apt autoremove
sudo apt autoclean

4) Beheben defekter Pakete und Behandeln fehlender Abhängigkeiten

Wenn die vorangegangenen Schritte bei Ihnen nicht zum Erfolg geführt haben, müssen Sie möglicherweise aptdie --fix-brokenOption zur Reparatur der entstandenen Schäden ausprobieren.

Stellen Sie sicher, dass Sie apt updatezuerst und dannapt install

sudo apt update    
sudo apt install mysql-server mysql-client --fix-broken --fix-missing

5) Wenn alles andere fehlschlägt, bauen und installieren mysqlSie selbst

Wenn keine der oben genannten Möglichkeiten funktioniert, müssen Sie den Quellcode manuell herunterladen, kompilieren und die Installation mit „make“ oder „bash“ von dort aus durchführen (das ist nicht so mühsam, wie es klingt, da alles automatisiert ist).

Antwort2

Das Problem mit dem ersten Beitrag ist, dass Sie ein Metapaket nicht richtig neu konfigurieren können, nicht für die SQL-Elemente. Sie müssen das aktuelle Release-Element angeben.

Sagen Sie verwenden;

apt search mysql-server

Das sollte eine Liste von Paketen anzeigen, nämlich

„mysql-server-5.7“ „mysql-server-core-5.7“ oder spätere Versionen

Dann;

dpkg-reconfigure --force mysql-server-5.7 mysql-server-core-5.7

Erledigt.

Antwort3

Das ist die richtige Lösung für Sie

Zuerst müssen Sie alle Pakete vom MySQL-Server entfernen:

ACHTUNG: Die folgenden Schritte werden Ihre Daten löschen! Machen Sie vorher ein Backup!

sudo rm -rf /var/lib/mysql

Dann installieren Sie:

sudo apt-get install lamp-server^

Oder Sie können Folgendes tun:

sudo apt-get install mysql-server

Antwort4

Dieser Fehler trat auch beim Wechsel von MySQL zu MariaDB auf (https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071).

Die MySQL-Binärdatendateien waren nicht mit MariaDB kompatibel, deshalb bin ich wieder zu MySQL zurückgekehrt, da ich keine Zeit hatte, mich mit mysqldump herumzuschlagen.

Zuerst musste ich die MariaDB-Daten von verschieben /var/lib/mysql, dann MySQL installieren und anschließend meine Originaldaten von /var/lib/mysql-5.7(dieses Backup wurde vor dem Fehler automatisch erstellt) nach verschieben /var/lib/mysql.

verwandte Informationen