Instalación de MariaDB cuando Apt informa que MariaDB tiene dependencias no satisfechas o paquetes rotos

9

He intentado todo para instalar MariaDB en esta instalación limpia de Ubuntu pero sigo recibiendo este error,

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:
mariadb-server : Depends: mariadb-server-5.5 (= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

He seguido esta guía para intentar instalarlo, http://www.unixmen.com/install-lemp-server-nginx-mysql-mariadb-php-ubuntu-13-10-server/

Y también he seguido la guía "oficial" en la página de descargas de MariaDB para 13.10 https://downloads.mariadb.org/mariadb/repositories/

Pero nada parece estar funcionando.

Editar 1

He intentado ambos ¿Cómo resuelvo dependencias insatisfechas después de agregar un PPA? y ¿Cómo instalar MariaDB? pero todavía me da el error que publiqué arriba.

Es una nueva instalación de Ubuntu con casi nada instalado.

Editar 2

Todas las casillas de verificación son ticket en Actualizaciones. Corrí:

sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"

Y me dio este error:

The following packages have unmet dependencies:
mariadb-server-5.5 : Depends: mariadb-client-5.5 (>= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
Depends: mariadb-server-core-5.5 (>= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Andreas
fuente
Ejecute este comando una vez para instalar el paquete de la lista: sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"asegúrese de haber marcado todas las casillas de verificación en la pestaña Actualizaciones en Fuentes de software . Para verificarlo, ejecute: sudo software-properties-gtkpara abrir Fuentes de software . Si recibe algún error / mensaje en el comando que mencioné anteriormente, publíquelo en su pregunta.
Saurav Kumar
Parece que pronto resolverá su problema. El truco principal es que debe enumerar todos los paquetes necesarios en una línea para instalar. Por ejemplo, a partir de su nueva salida que debe ejecutar: sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy mariadb-client-5.5"=5.5.33a+maria-1~saucy" mariadb-server-core-5.5"=5.5.33a+maria-1~saucy" Capture el patrón que estoy haciendo, por lo que si obtiene algunos paquetes más para instalar, debe incluirlo en la misma línea que siguiendo el mismo patrón. Sé que sería difícil, pero espero que te ayude. Respuesta.
Saurav Kumar
Correcto, logré instalar mariadb-common e intenté instalar libmariadbclient18, que depende de libmysqlclient18, pero dice que ya tengo libmysqlclient18 con libdbd-mysql-perl.
Andreas
@Ecaz ¿Has encontrado una solución para tu problema? Estoy experimentando lo mismo.
Jon Koops
Recibo este error:libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.33a+maria-1~saucy) but 5.5.34-0ubuntu0.13.10.1 is to be installed
Jon Koops

Respuestas:

16

Vea la discordancia de versiones entre los repositorios Debian Mariadb y Ubuntu

Es raro que los números de versión de mysql-common o libmysqlclient sean más altos en los repositorios oficiales de Ubuntu o Debian que en los repositorios de MariaDB, pero ha sucedido. Siempre que lo ha hecho, se debe a las versiones críticas de corrección de errores para errores que existían en la versión de MySQL en los repositorios de distribución pero que ya se habían solucionado en la versión de MariaDB en los repositorios de MariaDB.

Si existe una situación como la descrita anteriormente cuando intenta instalar MariaDB, obtendrá un error como este:
The following packages have unmet dependencies:
mariadb-server : Depends: mariadb-server-5.5 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Una forma de solucionar esto es especificar la versión exacta de los dos paquetes que desea instalar. Para hacer esto, primero determine los números de versión completa de los paquetes afectados. Una manera fácil de hacerlo es con 'apt-cache show':
apt-cache show mysql-common | grep Version
apt-cache show libmysqlclient18 | grep Version

Esta es la situación a partir de este escrito, ya que los números de versión se muestran como:

Version: 5.5.34-0ubuntu0.13.10.1
Version: 5.5.34+maria-1~saucy

La página MariaDB ofrece dos soluciones.

Primera solución: especificar la versión del paquete

Para cada uno de los anteriores se le dará una lista de versiones. Los que están en los repositorios de MariaDB tendrán "mariadb" en las cadenas de versión y son los que desea. Con los números de versión disponibles, podrá instalar MariaDB especificando explícitamente los números de versión de esta manera:
apt-get install mariadb-server-5.5 mariadb-client-5.5 \
libmysqlclient18=<version-number> \
mysql-common=<version-number>

cual es

apt-get install mariadb-server-5.5 mariadb-client-5.5 \
 libmysqlclient18=5.5.34+maria-1~saucy \
 mysql-common=5.5.34+maria-1~saucy

NOTA: Actualice a 5.5.34 para reflejar la versión actual a partir de 2014.01.28 [RealPariah] Después de la instalación, debe retener los paquetes hasta que los números de versión vuelvan a sincronizarse.

Después de instalar MariaDB, y mientras exista el problema del número de versión, un `apt-get dist-upgrade` intentará eliminar MariaDB para instalar los paquetes libmysqlclient y mysql-common" actualizados ". Para evitar que esto suceda, puede mantenerlos para que apt no intente actualizarlos. Para hacerlo, abra una terminal, conviértase en root con `sudo -s`, y luego ingrese lo siguiente:
echo libmysqlclient18 hold | dpkg --set-selections
echo mysql-common hold | dpkg --set-selections
Las retenciones le impedirán actualizar MariaDB, por lo tanto, cuando desee eliminar las retenciones, abra una terminal, hágase root con 'sudo -s' y luego ingrese lo siguiente:
echo libmysqlclient18 install | dpkg --set-selections
echo mysql-common install | dpkg --set-selections
Entonces podrá actualizar MariaDB de forma normal (p. Ej., Con `sudo apt-get update; sudo apt-get upgrade`).

¿Cómo sé cuándo los números de versión coinciden nuevamente?

Puede rastrear el número de versión de MariaDB registrándose para recibir una alerta por correo electrónico de nuevos lanzamientos en MariaDB.org . Según el sitio, es un low-traffic announce-only list.

Además, cuando las versiones del paquete estén una vez más sincronizadas, debe dejar de ver un mensaje en apt de que solo se retendrán los 2 paquetes retenidos, pero que todos los paquetes mariadb se retendrán:

The following packages have been kept back:
libmariadbclient18 libmysqlclient18 linux-generic linux-headers-generic
linux-image-generic mariadb-client-5.5 mariadb-client-core-5.5
mariadb-server mariadb-server-5.5 mariadb-server-core-5.5 mysql-common

Esto indica que los números de paquete vuelven a estar sincronizados, lo que también puede verificarse en herramientas sinápticas o similares.

Segunda solución: anclar el repositorio MariaDB

Otra cosa que puede hacer es anclar el repositorio MariaDB que usa. Esto se realiza creando un archivo en `/ etc / apt /ferences.d /` con el siguiente contenido:
Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000

Reemplace <mirror-domain>con el nombre de dominio del espejo MariaDB que usa. Por ejemplo, ftp.osuosl.org. Con el archivo pin en su lugar, los paquetes de su repositorio MariaDB tendrán prioridad sobre los paquetes de los repositorios del sistema.

Puede encontrar el nombre de espejo que está utilizando en Configuración del sistema >> Software y actualizaciones , o si está utilizando otro sabor de Ubuntu, Synaptic >> Configuración >> Repositorios , o cat /etc/apt/sources.list.

En Pin-Priorityeste caso, debe ser mayor o igual a 1000, quecauses a version to be installed even if this constitutes a downgrade of the package

(Consulte man 5 apt_preferencespara obtener más información sobre las opciones en otros casos).

Nombrar el archivo de preferencias de fijación

Note that the file in the /etc/apt/preferences.d directory are parsed in alphanumeric ascending order and need to obey the following naming convention:

The files have either no or "pref" as filename extension and only contain alphanumeric, hyphen (-), undescore (_), and period (.) characters. Otherwise APT will print a notice that it has ignored a file...

(Fuente: man 5 apt_preferences)

Entonces, el nombre en sí no importa, pero un buen nombre sería algo así 50_mariadb. Esto identifica el paquete involucrado y permite que otros archivos de preferencias de fijación se coloquen fácilmente antes y después de este archivo en el orden de procesamiento.

chaskes
fuente
Probaré la primera solución, pero ¿cómo sabes cuándo se ha solucionado la falta de coincidencia? ¿Tengo que buscar en el registro de cambios cada vez que lanzan una actualización?
Andreas
Usé el primer método y todo salió muy bien. No te preocupes por las dependencias en absoluto. Edité la respuesta con información sobre el número de versión de
mariadb
¿Cuál debería ser el nombre del archivo de fijación para la segunda solución?
Thomas Taylor el
Te agradezco por tus habilidades. Los paquetes mariadb están bastante jodidos. Afirmo esto basado en el hecho de que nunca he tenido que hacer nada de lo anterior antes, pero lo anterior me instaló. ¡Gracias!
jettero
1
@ thomas-taylor Se agregó información al nombrar el archivo de fijación.
chaskes
2

Tuve un problema similar en Ubuntu 14.10 al actualizar MySQL a Maria DB. Es decir, me quedaría atrapado con

 libmysqlclient18:amd64 10.0.16+maria-1~utopic (Multi-Arch: no) is not co-installable with libmysqlclient18 which has multiple installed instances

Después de seguir estas sugerencias en vano, lo siguiente me ayudó mucho: Cómo reemplazar MySQL con MariaDB en Ubuntu Server por JournalXtra.

Editando / var / lib / dpkg / status y eliminando las dos instancias de libmysqlclient18 de esta manera:

Package: libmysqlclient18
Status: deinstall ok config-files
Priority: optional
Section: libs
Installed-Size: 3392
Maintainer: Ubuntu Developers <[email protected]>
Architecture: i386
Multi-Arch: same
Source: mysql-5.5
Version: 5.5.40-0ubuntu1
Config-Version: 5.5.40-0ubuntu1
Depends: mysql-common (>= 5.5.40-0ubuntu1), libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), zlib1g (>= 1:1.1.4)
Pre-Depends: multiarch-support
Description: MySQL database client library

MySQL es un servidor de base de datos SQL rápido, estable y verdadero para múltiples usuarios y múltiples subprocesos. SQL (Structured Query Language) es el lenguaje de consulta de base de datos más popular del mundo. Los objetivos principales de MySQL son la velocidad, robustez y facilidad de uso. . Este paquete incluye la biblioteca del cliente. Página de inicio: http://dev.mysql.com/ Original-Maintainer: Debian MySQL Maintainers

Me permitió instalar MariaDB sin problemas después.

sudo apt-get install mariadb-server

Nota : Llegué aquí después de muchos intentos de eliminar libmariadbclient18 y libmysqlclient18 antes de que esta solución funcionara. No pude superar los problemas de apt-get hasta que se eliminaron estos dos, ya que se informaron como paquetes rotos antes de que pudiera intentar cualquier otra reparación.

m1st0
fuente