it-swarm.com.de

Mysql-server kann nach der Bereinigung nicht erneut installiert werden

Ich habe kürzlich eine Neuinstallation von Ubuntu 16.04 durchgeführt. Ich habe auch mysql-server und mysql-client (ihre Standardversion 5.7.12) über apt-get install installiert.

Da 5.7.12 einige Probleme aufwies, entschied ich mich, es zu deinstallieren. Ich habe zuerst apt-get remove mysql-server mysql-client versucht, aber festgestellt, dass Artefakte wie /etc/mysql und /var/lib/mysql nicht entfernt wurden.

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

Also habe ich sie manuell entfernt (über rm -rf). Ich habe auch alle *mysql* Dateien unter /usr/ manuell entfernt, die aus mysql-* Abhängigkeitspaketen wie mysql-common stammen.

Wenn ich jetzt jedoch mysql-server and -client erneut installieren möchte, kann ich das nicht.

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

Wie kann ich die Situation beheben, in der ich mich befinde? Wie repariere ich meine lokalen Paket-Repository-Metadaten, wenn sie beschädigt sind?

Ich würde es hassen, das ganze gesegnete Betriebssystem mit all meinen anderen Apps und Umgebungen neu zu installieren, ein weiteres Mal nur wegen mysql-server.

Der folgende Fehler wird beispielsweise angezeigt, wenn ich versuche, mysql-server zu entfernen:

$ 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 wenn ich versuche zu installieren, bekomme ich diesen Fehler:

$ 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)
28
Harry

Bearbeitet am 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 ist, dass sich das Paket immer 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)

Was es wirklich sagt ist, dass das Paket mysql-server-5.7 eine Abhängigkeit für mysql-server ist, bereits installiert, aber nicht konfiguriert ist. Sie müssen es also purge entfernen, um die Brotkrumen zu entfernen, die mysql-server-5.7 zurückgelassen hat.

Sudo apt purge mysql-server mysql-server-5.7

Begründung

Wenn Sie Software mit apt installieren, werden Abhängigkeiten automatisch auch für Sie verarbeitet.

Wenn Sie bestimmte Pakete entfernen, werden möglicherweise nicht dieselben Abhängigkeiten behandelt. In diesem Beitrag ist diese Abhängigkeit mysql-server-5.7.

Sie können überprüfen, ob ein Paketstatus vorliegt, indem Sie den folgenden Befehl ausführen.

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

Wenn Sie normalerweise den Code un oder rc links vom Paketnamen sehen, können Sie feststellen, ob es sich tatsächlich um ein defektes Paket handelt.

Als ich dieses Problem bemerkte, war es mit libapache2-mod-php und libapache2-mod-php7.0. Das 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 sei nicht auf meinem System installiert (Code un).

Wenn Sie apt an remove senden, verbleiben möglicherweise Pakete, Konfigurationsdateien und andere Elemente, die bei automatisierten Installationen problematisch sein können.

Wenn Sie apt zu purge etwas sagen, ist es am besten, Brotkrumen zu entfernen, die remove möglicherweise zurückgelassen haben.

Ich habe ursprünglich angegeben, dass ich davon ausgegangen bin, dass der Prozess noch läuft, aber höchstwahrscheinlich inaktiv oder tot ist.

Der beste Weg, um zu überprüfen, ob der Dienst Ihre Paketentfernung stört, besteht darin, zuerst diesen Dienst zu überprüfen.

1) Untersuchung des mysql-Dienstes

Unter Verwendung des von apt angegebenen Systemfehlers können wir systemctl verwenden, um den Fehler zu untersuchen, indem wir den Status des mysql -Dienstes überprüfen

Sudo systemctl status [pattern]

In unserem Fall möchten wir sehen, ob mysql läuft, damit wir es eintippen können

systemctl status mysql.service

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

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 in einer kurzen Meldung angezeigt, dass kein Dienst mit diesem Namen ausgeführt wird. Fahren Sie dann mit Schritt 3 fort.

2) Beenden des mysql -Dienstes mit systemctl

Hinweis: [Muster] muss der Name sein, der mit service oder initctl aufgeführt ist. Der Grund, warum ich pattern verwende, ist, dass systemctl Regex-Übereinstimmungen verwendet. Seien Sie also vorsichtig, wenn Sie das Argument kill verwenden müssen.

Sudo systemctl stop [pattern]

dabei steht pattern für den Namen des MySQL-Dämons/-Dienstes. wenn stop nicht funktioniert versuch es

Sudo systemctl kill [pattern]

Zum Beispiel

Sudo systemctl stop mysql

3) Deinstallieren/Löschen von mysql

Wenn Sie eine vollständige Bereinigung durchführen möchten, stellen Sie sicher, dass der Dienst oder Prozess zuerst gestoppt wurde, und entfernen Sie dann die richtigen Dateien und Verzeichnisse.

Hinweis: Vergewissern Sie sich, dass Sie die richtige mysql Version auswählen. 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 eine Sicherung durchzuführen.)

source: 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 vorhergehenden Schritte bei Ihnen nicht erfolgreich waren, müssen Sie möglicherweise apt mit der Option --fix-broken ausführen, um den verursachten Schaden zu beheben.

Stellen Sie sicher, dass zuerst apt update und dann apt install

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

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

Wenn keines der oben genannten Verfahren funktioniert, müssen Sie den Quellcode manuell herunterladen, kompilieren und make oder bash verwenden, um ihn von dort aus zu installieren (nicht so schmerzhaft, wie es sich anhört, da es vollständig automatisiert ist).

78
user383919

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

Sagen Sie Gebrauch;

apt search mysql-server

Das sollte nämlich eine Liste von Paketen anzeigen

"mysql-server-5.7" "mysql-server-core-5.7" oder neuere Versionen

dann;

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

getan.

7
e8hffff

Dies ist die richtige Lösung für Sie

Zuerst müssen Sie alle Pakete von mysql-server entfernen:

ACHTUNG: Mit den folgenden Schritten werden Ihre Daten gelöscht! Führen Sie zuerst eine Sicherung durch!

Sudo rm -rf /var/lib/mysql

Dann installieren Sie:

Sudo apt-get install lamp-server^

Oder Sie können tun:

Sudo apt-get install mysql-server
3
Rohan

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, daher bin ich zurück zu MySQL gewechselt, weil ich keine Zeit hatte, mich mit mysqldump zu beschäftigen.

Zuerst musste ich MariaDB-Daten von /var/lib/mysql entfernen, dann MySQL installieren und dann meine ursprünglichen Daten von /var/lib/mysql-5.7 (diese Sicherung wurde vor dem Fehler automatisch erstellt) nach /var/lib/mysql verschieben.

0
baptx

Ich habe es gesehen

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.

als Hinweis darauf, dass es noch ein fehlerhaftes Startskript gab.

Suchen Sie nach /etc/init.d/mysql und allen Symlinks dazu. Das Entfernen dieser Dateien schien meine Probleme bei der Neuinstallation nach der Bereinigung zu beheben.

0
ghatzhat