J'ai récemment fait une nouvelle installation d'Ubuntu 16.04. J'ai également installé mysql-server
et 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-client
abord mais j'ai vu que les artefacts aimaient /etc/mysql
et /var/lib/mysql
n'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-server
ni 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)
mysql-server-5.7
est dans un mauvais état, essayez de le réinstaller:sudo apt-get install --reinstall mysql-server-5.7
.... invoke-rc.d: initscript mysql, action "start" failed. ...
que j'obtiens avec d'autres versions de commandes d'installation.sudo apt-get remove --purge mysql-server-5.7
. Notez que c'est vraiment de cela dontmysql-server-5.7
nous parlons, nonmysql-server
.Réponses:
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é.
Ce que cela veut vraiment dire, c'est que le package
mysql-server-5.7
est une dépendance pourmysql-server
, est déjà installé, mais n'est pas configuré. Vous en avez donc besoin pourpurge
supprimer les miettes de pain laissées parmysql-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.
Habituellement, si vous voyez le code
un
ourc
à 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-php
etlibapache2-mod-php7.0
. C'était ma sortie.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
àremove
quelque 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
àpurge
quelque chose, il est préférable d'enlever tout fil d'Ariane quiremove
aurait 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
mysql
serviceEn utilisant l'erreur système qui nous a été donnée par
apt
, nous pouvons réellement utilisersystemctl
pour enquêter sur l'erreur en vérifiant l'état dumysql
serviceDans notre cas, nous voulons voir si mysql est en cours d'exécution, nous pouvons donc taper
Vous devriez voir cette sortie si le service est en cours d'exécution
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
mysql
service en utilisantsystemctl
remarque: [motif] doit être le nom répertorié par
service
ouinitctl
. la raison pour laquelle j'utilisepattern
est parce qu'ilsystemctl
utilise la correspondance regex, alors soyez prudent si vous devez utiliser l'kill
argument.où
pattern
représente le nom du démon / service mysql. si l'arrêt ne fonctionne pas, essayezPar exemple
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
mysql
version. 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?
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
apt
l'--fix-broken
option de réparer les dommages causés.Assurez-vous d'
apt update
abord et ensuiteapt install
5) Quand tout le reste échoue, construisez et installez
mysql
vous-mêmeSi 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é).
la source
rm
fichiers appartenant à des packages.sudo rm -rf /var/lib/mysql
supprimera toutes vos bases de données à l'emplacement par défaut. FAITES une sauvegarde en premier!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;
Cela devrait afficher une liste de packages à savoir
"mysql-server-5.7" "mysql-server-core-5.7" ou versions ultérieures
puis;
terminé.
la source
C'est la bonne solution pour vous
Tout d'abord, vous devrez supprimer tous les paquets de mysql-server:
Installez ensuite:
Ou vous pouvez faire:
la source
j'ai vu ça
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.la source
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
.la source
Essayez
apt-get -f install
de 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 égalementdpkg -l | grep sql
pour découvrir que le gestionnaire de paquets pense toujours que vous SQL ou non ..la source
apt-get -f install
par lui-même, sans spécifier de nom de package.apt-get install -f
, aucun changement.