Recientemente hice una nueva instalación de Ubuntu 16.04. También instalé mysql-server
y mysql-client
(su versión predeterminada 5.7.12) a través de apt-get install
.
Debido a que 5.7.12 mostraba algunos problemas, decidí desinstalarlo. Lo intenté apt-get remove mysql-server mysql-client
primero pero vi que a los artefactos les gustaba /etc/mysql
y /var/lib/mysql
no me los quitaban.
Entonces lo intenté apt-get --purge removed mysql-server mysql-client
, pero aún no hay diferencia.
Entonces, los eliminé manualmente (a través de rm -rf
). También eliminé manualmente todos los *mysql*
archivos /usr/
que vinieron de cualquier mysql-*
paquete de dependencia como mysql-common
.
Sin embargo, ahora, cuando deseo volver a instalar mysql-server and -client
, descubro que no puedo.
De hecho, ¡ahora estoy en un estado donde no puedo apt-get remove mysql-server
ni apt-get install mysql-server
!
¿Cómo soluciono la situación en la que estoy? Si mis metadatos del repositorio de paquetes local se han dañado, ¿cómo lo reparo?
Odiaría reinstalar todo el SO bendito con todas mis otras aplicaciones y entorno, una vez más solo por eso mysql-server
.
El siguiente, por ejemplo, es el error que obtengo cuando intento eliminar 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)
Y cuando intento instalar, me sale este error:
$ 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)
Aquí está la salida 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á en mal estado, intente volver a instalarlo:sudo apt-get install --reinstall mysql-server-5.7
.... invoke-rc.d: initscript mysql, action "start" failed. ...
que obtengo con otros tipos de comandos de instalación.sudo apt-get remove --purge mysql-server-5.7
. Tenga en cuenta que esto es realmente de lomysql-server-5.7
que estamos hablando, nomysql-server
.Respuestas:
Editado el 10 de enero de 2017 : esta es una revisión importante de esta publicación para corregir problemas graves en esta publicación.
El error de corazón
El problema es que el paquete todavía está en el sistema en un estado medio instalado y medio configurado y debe eliminarse explícitamente.
Lo que realmente dice es que el paquete
mysql-server-5.7
es una dependenciamysql-server
, ya está instalado, pero no está configurado. Por lo tanto, debepurge
eliminar las migas de pan que dejómysql-server-5.7
.Razón fundamental
Cuando instala el software usando
apt
, también maneja automáticamente las dependencias por usted.Cuando elimina ciertos paquetes, es posible que no maneje esas mismas dependencias. En el caso de esta publicación, esa dependencia es
mysql-server-5.7
.Puede verificar para ver el estado de un paquete emitiendo el siguiente comando.
Por lo general, si ve el código
un
orc
a la izquierda del nombre del paquete, podrá saber si en realidad es un paquete roto.Cuando experimenté este problema, fue con
libapache2-mod-php
ylibapache2-mod-php7.0
. Esta fue mi salida.En mi caso, afirmó que el estado de mi paquete es desconocido y que no está instalado (el código
un
) en mi sistema.Cuando le dices
apt
aremove
algo, que puede dejar paquetes, archivos de configuración y otros artículos que pueden ser problemáticos durante las instalaciones automatizadas.Cuando le dices
apt
apurge
algo que hace, lo mejor es eliminar las migas de pan queremove
puedan haber quedado atrás.Originalmente dije que asumí que el proceso todavía se estaba ejecutando, pero lo más probable es que estuviera inactivo o muerto.
La mejor manera de verificar si el servicio está interfiriendo con la eliminación de su paquete es verificar primero ese servicio.
1) Investigar el
mysql
servicioUsando el error del sistema que nos dio
apt
, podemos usarlosystemctl
para investigar el error al verificar el estado delmysql
servicioEn nuestro caso, queremos ver si mysql se está ejecutando, así que podemos escribir
Debería ver esta salida si el servicio se está ejecutando
nota: si el servicio está inactivo, verá un breve mensaje que indica que no hay ningún servicio con ese nombre ejecutándose y luego vaya al paso 3.
2) Detener el
mysql
servicio usandosystemctl
nota: [patrón] debe ser el nombre listado por
service
oinitctl
. La razón que usopattern
es porquesystemctl
usa la coincidencia de expresiones regulares, así que tenga cuidado si debe usar elkill
argumento.donde
pattern
representa el demonio mysql / nombre del servicio. si parar no funciona intentePor ejemplo
3) Desinstalar / purgar
mysql
Si necesita purgar totalmente, asegúrese de que el servicio o proceso se detenga primero y luego asegúrese de eliminar los archivos y directorios correctos.
Nota: Asegúrese de estar apuntando a la
mysql
versión correcta . Por ejemplo, si usa 5.5, ajuste el número de versión adecuadamente.ADVERTENCIA: ¡ los siguientes pasos eliminarán sus datos! (el primer comando debe ejecutarse para hacer una copia de seguridad)
fuente: ¿Cómo desinstalo MySQL?
4) Reparación de paquetes rotos y manejo de dependencias faltantes
Si los pasos anteriores no funcionaron para usted, es posible que deba ejecutar
apt
la--fix-broken
opción para reparar cualquier daño causado.Asegúrese de
apt update
primero y luegoapt install
5) Cuando todo lo demás falla, construye e instálalo
mysql
tú mismoSi nada de lo anterior funciona, tendrá que descargar manualmente la fuente, compilar y usar make o bash para instalar desde allí (no es tan doloroso como parece, ya que todo está automatizado).
fuente
rm
archivos que pertenecen a paquetes.sudo rm -rf /var/lib/mysql
eliminará todas sus bases de datos en la ubicación predeterminada. ¡Haz una copia de seguridad primero!El problema con la primera publicación es que no puede reconfigurar bien un metapaquete, no para los elementos sql. Debe especificar el elemento de lanzamiento actual.
Decir uso;
Eso debería mostrar una lista de paquetes a saber
"mysql-server-5.7" "mysql-server-core-5.7" o versiones posteriores
luego;
hecho.
fuente
Esta es la solución correcta para ti
Primero, tendrá que eliminar todos los paquetes de mysql-server:
Luego instale:
O puedes hacer:
fuente
yo vi esto
como una pista de que todavía existía un script de inicio erróneo.
Busque
/etc/init.d/mysql
y cualquier enlace simbólico a él. Eliminarlos pareció solucionar mis problemas de reinstalación después de la purga.fuente
Este error también ocurrió al cambiar de MySQL a MariaDB ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071 ).
Los archivos de datos binarios de MySQL no eran compatibles con MariaDB, así que volví a MySQL porque no tuve tiempo de meterme con mysqldump.
Primero tuve que alejar los datos de MariaDB
/var/lib/mysql
, luego instalar MySQL y luego mover mis datos originales/var/lib/mysql-5.7
(esta copia de seguridad se creó automáticamente antes del error) a/var/lib/mysql
.fuente
¡Intente
apt-get -f install
arreglar su paquete SQL roto y si todavía tiene problemas con el administrador de paquetes, descargue el código fuente del servidor SQL y compílelo! Pero pruebe el comando anterior y también usedpkg -l | grep sql
para descubrir que el administrador de paquetes aún cree que es SQL o no ...fuente
apt-get -f install
solo, sin especificar un nombre de paquete.apt-get install -f
, sin cambios.