Impossible de réinstaller mysql-server après sa purge

29

J'ai récemment fait une nouvelle installation d'Ubuntu 16.04. J'ai également installé mysql-serveret mysql-client(leur version par défaut 5.7.12) via apt-get install.

Parce que 5.7.12 montrait quelques problèmes, j'ai décidé de le désinstaller. J'ai essayé d' apt-get remove mysql-server mysql-clientabord mais j'ai vu que les artefacts aimaient /etc/mysqlet /var/lib/mysqln'ont pas été supprimés.

J'ai ensuite essayé apt-get --purge removed mysql-server mysql-client, mais toujours aucune différence.

Donc, je les ai supprimés manuellement (via rm -rf). J'ai également supprimé manuellement tous les *mysql*fichiers sous /usr/qui provenaient de tous mysql-*les packages de dépendance comme mysql-common.

Cependant, maintenant, quand je souhaite réinstaller mysql-server and -client, je constate que je ne peux pas.

En fait, maintenant je suis dans un état où je ne peux ni apt-get remove mysql-serverni ni apt-get install mysql-server!

Comment régler la situation dans laquelle je me trouve? Si mes métadonnées du référentiel de packages local sont corrompues, comment puis-je les réparer?

Je détesterais réinstaller tout le système d'exploitation béni avec toutes mes autres applications et mon environnement, une fois de plus simplement à cause de mysql-server.

Par exemple, voici l'erreur que j'obtiens lorsque j'essaie de supprimer 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)

Et lorsque j'essaie d'installer, j'obtiens cette erreur:

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

Voici la sortie de 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
la source
Il ressemble mysql-server-5.7est dans un mauvais état, essayez de le réinstaller: sudo apt-get install --reinstall mysql-server-5.7.
fkraiem
Cela ne fait aucune différence, j'obtiens la même ligne d'erreur: ... invoke-rc.d: initscript mysql, action "start" failed. ...que j'obtiens avec d'autres versions de commandes d'installation.
Harry
Essayez de le supprimer, puis ... sudo apt-get remove --purge mysql-server-5.7. Notez que c'est vraiment de cela dont mysql-server-5.7nous parlons, non mysql-server.
fkraiem
@Harry Plusieurs fois, je redémarre le système pour me débarrasser de ce type d'erreur.
marguerite
Mon problème résolu en suivant ce post
Raizal IN Pregnanta

Réponses:

80

Modifié le 10 janvier 2017 : il s'agit d'un examen majeur de ce message pour corriger les problèmes graves dans ce message.

L'erreur au coeur

Le problème est que le package est toujours sur le système dans un état semi-installé et semi-configuré et doit être explicitement supprimé.

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)

Ce que cela veut vraiment dire, c'est que le package mysql-server-5.7est une dépendance pour mysql-server, est déjà installé, mais n'est pas configuré. Vous en avez donc besoin pour purgesupprimer les miettes de pain laissées par mysql-server-5.7.

sudo apt purge mysql-server mysql-server-5.7

Raisonnement

Lorsque vous installez un logiciel à l'aide apt, il gère également automatiquement les dépendances.

Lorsque vous supprimez certains packages, il peut ne pas gérer ces mêmes dépendances. Dans le cas de ce poste, cette dépendance est mysql-server-5.7.

Vous pouvez vérifier pour voir un état de package en exécutant la commande suivante.

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

Habituellement, si vous voyez le code unou rcà gauche du nom du package, vous serez en mesure de dire s'il s'agit réellement d'un package cassé.

Lorsque j'ai rencontré ce problème, c'était avec libapache2-mod-phpet libapache2-mod-php7.0. C'était ma sortie.

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)

Dans mon cas, il a affirmé que le statut de mon package était inconnu et qu'il n'était pas installé (le code un) sur mon système.

Lorsque vous dites aptà removequelque chose, il peut laisser des paquets, les fichiers de configuration et d' autres éléments qui peuvent être problématiques au cours des installations automatisées.

Lorsque vous dites aptà purgequelque chose, il est préférable d'enlever tout fil d'Ariane qui removeaurait pu rester.

Au départ, j'ai déclaré que je supposais que le processus était toujours en cours, mais il était très probablement inactif ou mort.

La meilleure façon de vérifier si le service interfère avec la suppression de votre colis est de vérifier d'abord ce service.

1) Enquête sur le mysqlservice

En utilisant l'erreur système qui nous a été donnée par apt, nous pouvons réellement utiliser systemctlpour enquêter sur l'erreur en vérifiant l'état du mysqlservice

sudo systemctl status [pattern]

Dans notre cas, nous voulons voir si mysql est en cours d'exécution, nous pouvons donc taper

systemctl status mysql.service

Vous devriez voir cette sortie si le service est en cours d'exécution

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

Remarque: Si le service est mort, vous verrez un court message indiquant qu'aucun service de ce nom n'est en cours d'exécution, puis passez à l'étape 3.

2) Arrêter le mysqlservice en utilisantsystemctl

remarque: [motif] doit être le nom répertorié par serviceou initctl. la raison pour laquelle j'utilise patternest parce qu'il systemctlutilise la correspondance regex, alors soyez prudent si vous devez utiliser l' killargument.

sudo systemctl stop [pattern]

patternreprésente le nom du démon / service mysql. si l'arrêt ne fonctionne pas, essayez

sudo systemctl kill [pattern]

Par exemple

sudo systemctl stop mysql

3) Désinstallation / purge mysql

si vous devez purger totalement, assurez-vous que le service ou le processus est d'abord arrêté, puis assurez-vous de supprimer les bons fichiers et répertoires!

Remarque: assurez-vous que vous ciblez la bonne mysqlversion. Par exemple, si vous utilisez 5.5, ajustez le numéro de version en conséquence.

ATTENTION: les étapes suivantes supprimeront vos données! (la première commande doit être exécutée pour faire une sauvegarde)

source: Comment désinstaller 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) Réparer les paquets cassés et gérer les dépendances manquantes

Si les étapes précédentes n'ont pas fonctionné pour vous, vous devrez peut-être exécuter aptl' --fix-brokenoption de réparer les dommages causés.

Assurez-vous d' apt updateabord et ensuiteapt install

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

5) Quand tout le reste échoue, construisez et installez mysqlvous-même

Si aucun des éléments ci-dessus ne fonctionne, vous devrez télécharger manuellement la source, compiler et utiliser make ou bash pour installer à partir de là (pas aussi pénible que cela puisse paraître car il est entièrement automatisé).

David Foerster
la source
"16.04 est criblé de charges de bugs en ce moment." Fonctionne pour moi, y compris MySQL. Il me semble que la plupart des problèmes que nous voyons ici proviennent de personnes qui font quelque chose de mal, comme essayer des rmfichiers appartenant à des packages.
fkraiem
1
Excellent copain de travail! Je vous remercie. j'ai perdu toute ma journée en utilisant des instructions stupides. Maintenant, cela a fonctionné!
Renjith VR
J'ai suivi vos instructions et sudo systemctl stop mysql semblait fonctionner. Cependant, après le redémarrage, il a de nouveau été cassé. démarrer ou arrêter ne fonctionne pas. sudo systemctl status mysql montre: Actif: désactivation (stop-sigterm) depuis lun 2016-06-27 11:05:22 BST; Il y a 8min Dois-je VRAIMENT attendre 10 minutes pour que mysql s'arrête? N'êtes-vous pas surpris que les gens purgent un service qui ne s'est pas complètement arrêté? Est-il possible qu'Ubuntu 16.04 le corrige? Quelles sont les options, pour revenir à la version précédente de LTS ou à une autre distribution?
ruby_object
Merci de supprimer et de réinstaller de cette façon a parfaitement fonctionné!
Louwki
5
remarque: sudo rm -rf /var/lib/mysqlsupprimera toutes vos bases de données à l'emplacement par défaut. FAITES une sauvegarde en premier!
augusto
7

Le problème avec le premier message est que vous ne pouvez pas reconfigurer un méta-package bien pas pour les éléments sql. Vous devez spécifier l'élément de version actuel.

Dites usage;

apt search mysql-server

Cela devrait afficher une liste de packages à savoir

"mysql-server-5.7" "mysql-server-core-5.7" ou versions ultérieures

puis;

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

terminé.

e8hffff
la source
4

C'est la bonne solution pour vous

Tout d'abord, vous devrez supprimer tous les paquets de mysql-server:

ATTENTION: les étapes suivantes supprimeront vos données! Faites d'abord une sauvegarde!

sudo rm -rf /var/lib/mysql

Installez ensuite:

sudo apt-get install lamp-server^

Ou vous pouvez faire:

sudo apt-get install mysql-server
Rohan
la source
0

j'ai vu ça

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.

comme un indice qu'il existait encore un script de démarrage erroné.

Recherchez /etc/init.d/mysql-y tout lien symbolique. La suppression de ceux-ci semble résoudre mes problèmes de réinstallation après la purge.

ghatzhat
la source
0

Cette erreur s'est également produite lors du passage de MySQL à MariaDB ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071 ).

Les fichiers de données binaires MySQL n'étaient pas compatibles avec MariaDB, je suis donc revenu sur MySQL car je n'ai pas eu le temps de jouer avec mysqldump.

J'ai d'abord dû déplacer les données MariaDB /var/lib/mysql, puis installer MySQL et déplacer mes données d'origine /var/lib/mysql-5.7(cette sauvegarde a été créée automatiquement avant l'erreur) vers /var/lib/mysql.

baptx
la source
-2

Essayez apt-get -f installde réparer votre package SQL cassé et si vous rencontrez toujours des problèmes avec le gestionnaire de packages, téléchargez le code source du serveur SQL et compilez-le !! Mais essayez la commande ci-dessus et utilisez également dpkg -l | grep sqlpour découvrir que le gestionnaire de paquets pense toujours que vous SQL ou non ..

Ali Ghasempour
la source
N'a pas fonctionné. J'ai également inclus l'erreur que j'obtiens en essayant d'installer le package.
Harry
@Harry Vous devez exécuter apt-get -f installpar lui-même, sans spécifier de nom de package.
fkraiem
Comme l'a dit fkraim, utilisez-le sans le nom du paquet ...
Ali Ghasempour
Ajout de la sortie de apt-get install -f, aucun changement.
Harry
Essayez l'application synaptique et vérifiez qu'il indique qu'il y a un paquet cassé ou non (sur la colonne de gauche) [si vous avez un bureau]
Ali Ghasempour