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

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 instalarla, 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 probado ambos. ¿Cómo resuelvo las dependencias no satisfechas 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 boleto 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. 

Ver la diferencia de versión entre Mariadb y los repositorys de Debian de Ubuntu

Es raro que los números de versión de mysql-common o libmysqlclient sean más altos en los repositorys oficiales de Ubuntu o Debian que en los repositorys de MariaDB, pero ha sucedido. Siempre que lo ha sido, se debe a la publicación de correcciones de errores críticos para los errores que existían en la versión de MySQL en los repositorys de distribución pero que ya se habían corregido en la versión de MariaDB en los repositorys 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 este problema es especificar la versión exacta de los dos paquetes que desea instalar. Para hacer esto, primero determine los números de versión completos de los paquetes afectados. Una forma 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 de MariaDB da dos soluciones.

Primera solución: Especificando la versión del paquete.

Para cada uno de los anteriores se le dará una lista de versiones. Los que están en los repositorys 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 así:

 apt-get install mariadb-server-5.5 mariadb-client-5.5 \ libmysqlclient18= \ mysql-common= 

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 mantener los paquetes hasta que los números de las versiones se vuelvan sincronizados.

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 un 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 evitarán que actualice MariaDB, así que cuando quiera eliminar las retenciones, abra un terminal, conviértase en 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 normalmente (por ejemplo, con `sudo apt-get update; sudo apt-get upgrade`).

¿Cómo puedo saber cuándo vuelven a coincidir los números de versión?

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

Además, cuando las versiones del paquete estén nuevamente sincronizadas, debe dejar de ver un mensaje en apt de que solo se retendrán los 2 paquetes retenidos, pero que todos los paquetes de mariadb se mantendrá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 los paquetes están nuevamente sincronizados, lo que también puede verificarse en herramientas sinápticas o similares.

Segunda solución: anclando el repository de MariaDB

Otra cosa que puedes hacer es anclar el repository de MariaDB que usas. Esto se hace creando un archivo en `/ etc / apt / preferences.d /` con el siguiente contenido:

 Package: * Pin: origin  Pin-Priority: 1000 

Reemplace con el nombre de dominio de la duplicación de MariaDB que usa. Por ejemplo, ftp.osuosl.org . Con el archivo pin en su lugar, los paquetes de su repository MariaDB tendrán prioridad sobre los paquetes de los repositorys del sistema.

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

La Pin-Priority en este caso debe ser mayor o igual a 1000, lo que causes a version to be installed even if this constitutes a downgrade of the package

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

Nombrando el archivo de preferencias de anclaje

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í como 50_mariadb . Esto identifica el paquete involucrado y permite que otros archivos de preferencias de anclaje se puedan colocar fácilmente antes o después de este archivo en el orden de procesamiento.

Tuve un problema similar en Ubuntu 14.10 al actualizar de MySQL a Maria DB. Es decir, me quedaría atascado 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 sin éxito, 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  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 bases de datos SQL multihilo, multiusuario, rápido, estable y verdadero. SQL (lenguaje de consulta estructurado) es el lenguaje de consulta de base de datos más popular del mundo. Los principales objectives de MySQL son la velocidad, la robustez y la facilidad de uso. . Este paquete incluye la biblioteca 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é después de muchos bashs para eliminar libmariadbclient18 y libmysqlclient18 antes de que esta solución funcionara. No pude superar los problemas de apt-get hasta que estos dos se eliminaron, ya que se informaron como paquetes rotos antes de que pudiera intentar cualquier otra reparación.