web-dev-qa-db-fra.com

Comment réparer une installation de paquet corrompue (mysql)

Après la mise à niveau vers Ubuntu 16.04, j'ai remarqué que mysql avait des erreurs ahurissantes. Convaincu que c’était une configuration défectueuse, j’ai essayé d’effectuer une purge de mysql. Cela n'a pas semblé tout effacer, alors j'ai essayé de le faire moi-même:

Sudo rm -r /etc/mysql
Sudo rm -r /usr/share/mysql-workbench
Sudo rm -r /usr/share/mysql
Sudo rm -r /usr/share/mysql-common

C'était une erreur. N'essayez JAMAIS de faire cela. Maintenant, mysql ne sera même pas installé correctement. J'ai essayé de réinstaller les dépendances:

Sudo apt-get install --reinstall $(apt-cache depends mysql-server | grep -Po 'Depends:\s+\K[^ ]+$' | tr '\n' ' ' )

Et les paquets eux-mêmes:

Sudo apt install mysql-workbench mysql-server --reinstall

Mais je reçois toutes sortes d'erreurs cryptiques, telles que:

Sudo apt-get install --reinstall mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 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.
E: Internal Error, No file name for mysql-server:AMD64

Et désinstaller

Sudo apt-get remove mysql-common
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libmysqlclient20 : Depends: mysql-common (>= 5.5) but it is not going to be installed
 mariadb-client-core-10.0 : Depends: mariadb-common (>= 10.0.24-7) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Ou si je reconfigure

Sudo dpkg --configure -a
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
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
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server

Ou si je force l'installation:

Sudo apt-get -f install
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) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
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)

Ou si je fais une purge:

Sudo apt-get -f purge mysql-server 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
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] y
(Reading database ... 348226 files and directories currently installed.)
Removing mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
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)

Est-il impossible de récupérer d'une installation partielle? Dois-je réinstaller le système d'exploitation?

14
Jonathan

Merci à @Videonauth

Sudo dpkg -r mysql-client-5.7
Sudo dpkg -r mysql-server-5.7
Sudo dpkg -r libmysqlclient20:i386
Sudo dpkg -r libmysqlclient20:AMD64
Sudo dpkg -r libmysqlclient18:AMD64
Sudo dpkg -r mysql-common

Puis en cours d'exécution:

Sudo apt-get purge mysql\* mariadb\* libmysql\* libmariadb\*

Si quelque chose échoue, exécutez simplement Sudo dpkg -r <failedpackage> et si CELA échoue, supprimez simplement le paquet qui en dépend. Si vous répétez, éventuellement apt-get fonctionnera à nouveau.

Voir aussi Quelle est la différence entre dpkg et aptitude/apt-get?

12
Jonathan

Procédez comme suit pour nettoyer les paquets cassés:

Sudo apt-get clean
Sudo apt-get update
Sudo dpkg -r mysql-client-5.7
Sudo dpkg -r mysql-server-5.7
Sudo dpkg -r libmysqlclient20:i386
Sudo dpkg -r libmysqlclient20:AMD64
Sudo dpkg -r libmysqlclient18:AMD64
Sudo dpkg -r mysql-common
Sudo dpkg -r mysql 

Après cela, réinstallez-le avec:

Sudo apt-get install mysql mysql-client* mysql-server*
20
Videonauth

Essaye ça,

lancez cette commande pour purger mysql, remplacez la version 5.7 par votre version installée

Sudo apt purge mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7 mysql-server

exécutez ceci pour nettoyer et mettre à jour les paquets

Sudo apt update && Sudo apt dist-upgrade && Sudo apt autoremove && Sudo apt -f install

enfin installer mysql

Sudo apt install mysql-server

cela a fonctionné pour moi.

6
rahul

Après avoir purgé mysql comme indiqué ci-dessus, vous devez installer mysql de cette façon:

Sudo apt-get install mysql-common 
Sudo apt-get install mysql-server

Lorsque vous installez de cette façon, vous ne rencontrerez pas d'erreur d'installation.

2
tomek

Je ne connais pas la raison exacte, mais toutes ces méthodes n'ont pas fonctionné pour moi. Dans mon cas, la procédure qui a corrigé le problème était la suivante:

Sudo apt-get purge mysql-*
Sudo apt-get autoremove
Sudo apt-get autoclean
Sudo apt-get dist-upgrade

Sudo rm -rf /etc/mysql
Sudo rm -rf /var/lib/mysql*

et redémarrage!

enfin, j'ai pu exécuter Sudo apt-get install mysql-server!

1
s1l3n0

Cela a fonctionné pour moi

Sudo apt-get purge mysql*
Sudo apt-get autoremove
Sudo apt-get autoclean
Sudo apt-get dist-upgrade

puis après que j'ai installé à nouveau mysql avec

Sudo apt-get install mysql-server et maintenant cela fonctionne bien.

1
Jayakrishnan Menon

La commande Sudo dpkg -r ne fonctionne pas pour moi ..

J'ai utilisé Sudo apt-get purge mysql-* pour désinstaller toutes les pages répétées, puis les réinstaller.

0
Ruijie Yuan