Mysql-server kann nach der Bereinigung nicht erneut installiert werden

29

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

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

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

Also habe ich sie manuell entfernt (via rm -rf). Ich entfernte auch manuell alle *mysql*Dateien darunter /usr/, die von irgendwelchen mysql-*Abhängigkeitspaketen wie kamen mysql-common.

Bei der Neuinstallation mysql-server and -clientstelle ich jedoch fest, dass dies nicht möglich ist.

Tatsächlich bin ich 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? 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, ihn 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 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)
Harry
quelle
Es sieht aus wie mysql-server-5.7in einem schlechten Zustand ist, versuchen Sie es erneut zu installieren: sudo apt-get install --reinstall mysql-server-5.7.
Fkraiem
Macht keinen Unterschied, ich bekomme die gleiche Fehlerzeile: ... invoke-rc.d: initscript mysql, action "start" failed. ...die ich mit anderen Varianten von Installationsbefehlen bekomme.
Harry
Versuchen Sie es zu entfernen, dann ... sudo apt-get remove --purge mysql-server-5.7. Beachten Sie, dass es sich hier wirklich mysql-server-5.7um etwas handelt, nicht um etwas mysql-server.
Fkraiem
@ Harry Oft starte ich das System neu, um diese Art von Fehler zu beseitigen.
Gänseblümchen
Mein Problem wurde gelöst, indem
ich

Antworten:

80

Bearbeitet 10. Januar 2017 : Dies ist eine wichtige Ü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 aussagt ist, dass das Paket mysql-server-5.7eine Abhängigkeit mysql-serverist, bereits installiert ist, aber nicht konfiguriert ist. Sie müssen purgees also tun, um die Brotkrumen zu entfernen, die von Ihnen zurückgelassen wurden mysql-server-5.7.

sudo apt purge mysql-server mysql-server-5.7

Begründung

Wenn Sie Software mithilfe von installieren apt, 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 den Code unoder rclinks neben dem Paketnamen sehen, können Sie normalerweise feststellen, ob es sich tatsächlich um ein defektes Paket handelt.

Als ich dieses Problem erlebte, war es mit libapache2-mod-phpund 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 unauf meinem System installiert (der Code ).

Wenn Sie sagen aptzu removeetwas, kann es Pakete, die Konfigurationsdateien und andere Elemente lassen , die bei automatisierten Anlagen problematisch sein kann.

Wenn Sie etwas erzählen apt, purgeist es am besten, alle Brotkrumen zu entfernen, die removemöglicherweise zurückgeblieben sind.

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, diesen Dienst zuerst zu überprüfen.

1) Untersuchung des mysqlDienstes

Mithilfe des von uns angegebenen Systemfehlers aptkö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, 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 mysqlDienstes mitsystemctl

Hinweis: [Muster] muss der Name sein, der mit serviceoder aufgeführt ist initctl. Der Grund, den ich benutze, patternist, dass ich systemctlRegex-Matching verwende. Seien Sie also vorsichtig, wenn Sie das killArgument verwenden müssen.

sudo systemctl stop [pattern]

wo patternsteht für die MySQL - Daemon / Service - Namen. wenn stop nicht funktioniert versuch es

sudo systemctl kill [pattern]

Beispielsweise

sudo systemctl stop mysql

3) Deinstallieren / Löschen mysql

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

Hinweis: Stellen Sie sicher, dass Sie auf die richtige mysqlVersion abzielen . 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.)

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) Reparieren defekter Pakete und Behandeln fehlender Abhängigkeiten

Wenn die vorhergehenden Schritte bei Ihnen nicht erfolgreich waren, müssen Sie möglicherweise aptdie --fix-brokenOption ausführen , um alle angerichteten Schäden zu reparieren.

Stellen Sie sicher, 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 sich

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).

David Foerster
quelle
"16.04 steckt gerade voller Bugs." Funktioniert für mich, einschließlich MySQL. Es scheint mir, dass die meisten Probleme, die wir hier sehen, von Leuten stammen, die etwas falsch gemacht haben, wie den Versuch, rmDateien zu finden, die zu Paketen gehören.
Fkraiem
1
Exzellente Arbeit, Kumpel! Danke dir. Ich habe meinen ganzen Tag damit verbracht, ein paar dumme Anweisungen zu befolgen. Jetzt hat das geklappt!
Renjith VR
Ich habe Ihre Anweisungen befolgt und sudo systemctl stop mysql schien zu funktionieren. Nach dem Neustart war es jedoch wieder kaputt. Start oder Stop funktioniert nicht. sudo systemctl status mysql zeigt: Aktiv: Deaktivieren (stop-sigterm) seit Mo 27.06.2016 11:05:22 GMT; 8min ago Muss ich wirklich 10 Minuten warten, bis mysql aufhört? Wundert es Sie nicht, dass die Leute einen Dienst spülen, der nicht ganz aufhört? Ist es möglich, dass Ubuntu 16.04 das Problem behebt? Welche Optionen stehen zur Verfügung, wenn Sie auf eine frühere LTS-Version oder eine andere Distribution zurückgreifen?
Ruby_Object
Dank Entfernen und Neuinstallieren funktionierte dieser Weg einwandfrei!
Louwki
5
Hinweis: sudo rm -rf /var/lib/mysqlEntfernt alle Ihre Datenbanken am Standardspeicherort. Mache zuerst ein Backup!
August
7

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.

e8hffff
quelle
4

Dies ist die richtige Lösung für Sie

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

WARNUNG: Die folgenden Schritte werden Ihre Daten löschen! Machen Sie zuerst ein Backup!

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
Rohan
quelle
0

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/mysqlund alle Symlinks dazu. Das Entfernen dieser Dateien schien meine Probleme bei der Neuinstallation nach dem Löschen zu beheben.

Ghatzhat
quelle
0

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 entfernen /var/lib/mysql, dann MySQL installieren und dann meine Originaldaten von /var/lib/mysql-5.7(diese Sicherung wurde vor dem Fehler automatisch erstellt) nach verschieben /var/lib/mysql.

baptx
quelle
-2

Versuchen Sie apt-get -f install, Ihr defektes SQL-Paket zu reparieren. Wenn Sie immer noch Probleme mit dem Paket-Manager haben, laden Sie den SQL Server-Quellcode herunter und kompilieren Sie ihn !! Aber versuche den obigen Befehl und benutze auch, dpkg -l | grep sqlum herauszufinden, ob der Paketmanager noch SQL für dich hält oder nicht.

Ali Ghasempour
quelle
Funktioniert nicht. Ich habe auch den Fehler eingefügt, den ich beim Versuch bekomme, das Paket zu installieren.
Harry
@Harry Du solltest apt-get -f installalleine laufen , ohne einen Paketnamen anzugeben.
Fkraiem
Wie Fkraim sagte, verwenden Sie es ohne Paketnamen ...
Ali Ghasempour
Hängte die Ausgabe von apt-get install -f, keine Änderung.
Harry
Versuchen Sie es mit der synaptischen Anwendung und überprüfen Sie, ob das Paket defekt ist oder nicht (in der linken Spalte) [wenn Sie einen Desktop haben]
Ali Ghasempour