Cómo reparar la instalación corrupta del paquete (mysql)

15

Después de actualizar a Ubuntu 16.04, noté que mysql tenía errores alucinantes. Convencido, era una configuración rota, intenté ejecutar una purga de mysql. Eso no pareció eliminar todo, así que intenté hacerlo yo mismo:

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

Esto fue un error. NUNCA intentes hacer esto. Ahora mysql ni siquiera se instalará correctamente. He intentado reinstalar las dependencias:

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

Y los paquetes en sí:

sudo apt install mysql-workbench mysql-server --reinstall

Pero obtengo todo tipo de errores crípticos, como:

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

Y desinstalar

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.

O si reconfigurar

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

O si forzo la instalación:

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)

O si hago una purga:

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)

¿Es apto incapaz de recuperarse de una instalación parcial? ¿Tengo que reinstalar el sistema operativo?

Jonathan
fuente
¿Has intentado hacer un enfoque más simple sudo apt-get install --reinstall mysql?
Videonauth
Actualicé para incluir los errores de esos
Jonathan
Tal vez quieras entrar en el chat y veamos si podemos solucionar esto.
Videonauth

Respuestas:

22

Haga lo siguiente para limpiar los paquetes rotos:

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 

Después de eso, vuelva a instalarlo con:

sudo apt-get install mysql mysql-client* mysql-server*
Videonauth
fuente
¡¡muchas gracias!! la eliminación de las dependencias de uno en uno es la única opción para salir de apt-get atascado
stackMonk
+1 por esto. Gracias por mencionar la pila completa de paquetes que se eliminarán para que MySQL los elimine. A mí también me funcionó.
Parveen Verma
En mi ubuntu 18.04 tratar de eliminar mysqlclient (ejecutando el tercer comando) produjo que: los problemas de dependencia impiden la eliminación de mysql-client-5.7: mysql-server-5.7 depende de mysql-client-5.7 (> = 5.7.26-0ubuntu0.18.04. 1) dpkg: paquete de procesamiento de errores mysql-client-5.7 (--remove): problemas de dependencia - no se eliminaron Se encontraron errores durante el procesamiento: mysql-client-5.7, pero se ejecuta sudo apt purge mysql-server mysql-server-5.7 mysql-server- core-5.7 a partir de aquí askubuntu.com/questions/760724/16-04-upgrade-broke-mysql-server parece que eliminó la instancia
Carmine
ahora recibí muchos errores al intentar instalar sudo apt install openjdk-8-jre openjdk-8-jdk.
Carmine
Pude encontrar el proceso que anteriormente estaba bloqueando cualquiera de mis intentos de limpiar la actualización de mysql, de hecho, detuve una instancia que se ejecutaba en mi sistema, luego la eliminé de la otra solución vinculada. Después de eso me aseguré de que mi sistema fuera actualizado. De hecho, descubrí que de alguna manera extraño muchas actualizaciones. Después de eso ahora hasta el momento de la instalación del SDK de Java que requieren propia instancia de MySQL parece procedió así
Carmín
13

Gracias a @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

Luego corriendo:

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

Si algo falla, simplemente ejecute sudo dpkg -r <failedpackage>y si ESO falla, simplemente elimine el paquete que depende de él. Si repite, eventualmente apt-get funcionará nuevamente.

Consulte también ¿Cuál es la diferencia entre dpkg y aptitude / apt-get?

Jonathan
fuente
La eliminación de esos paquetes libmysqlclient, a pesar de que otros paquetes dependen de ellos, y la purga de todo funcionó. Aunque ahora obtengo errores mysql_upgrade.
skerit
Nunca recibí errores mysql_upgrade. Pero es posible que deba eliminar aún más paquetes. Supongo que depende de qué paquete se corrompió. Hay una manera de buscar todos los paquetes instalados que están relacionados con mysql pero se me olvida cómo. Creo que es un comando dpkg list enviado a través de grep
Jonathan
9

Prueba esto,

ejecuta este comando para purgar mysql, reemplaza la versión 5.7 con tu versión instalada

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

ejecutar esto para limpiar y actualizar paquetes

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

finalmente instale mysql

sudo apt install mysql-server

Esto funcionó para mí.

rahul
fuente
1
Esto funcionó para mí, donde la respuesta seleccionada no (falló sudo dpkg -r mysql-client-5.7)
jeff-h
¡gracias! Estuve buscando una solución durante horas y esta es la única respuesta que funciona.
mirza
1
Esto funcionó para mí. Este tutorial también ayudó.
nwaweru
4

Después de purgar mysqlcomo se ha mostrado anteriormente, debe instalar mysql de esta manera:

sudo apt-get install mysql-common 
sudo apt-get install mysql-server

Cuando instale de esta manera, no tendrá un error de instalación.

tomek
fuente
esto funciona para mí
user1735921
2

No sé la razón exacta, pero todos estos métodos no funcionaron para mí. En mi caso, el procedimiento que corrigió el problema fue:

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*

y reiniciar !

¡por fin he podido correr sudo apt-get install mysql-server!

s1l3n0
fuente
Gracias, funcionó para mí
Nijo
1

Esto funciono para mi

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

Luego de eso instalé MySQL nuevamente con

sudo apt-get install mysql-server y ahora está funcionando bien.

Jayakrishnan Menon
fuente
0

El comando sudo dpkg -r no funciona para mí.

Solía sudo apt-get purge mysql-*desinstalar todas las páginas publicadas y luego reinstalarlas

Ruijie Yuan
fuente