Saltar al contenido

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

Solución:

Ver versión no coincidente entre los repositorios Mariadb y Ubuntu Debian

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 ha sido así, ha sido debido 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 habían sido corregidos 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 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 al momento de escribir este artículo, 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 usted quiere. Con los números de versión en la mano, 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=<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 guardar los paquetes hasta que los números de versión se vuelvan a sincronizar.

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 evitarán que actualice MariaDB, por lo que cuando desee eliminar las retenciones, abra una 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 como de costumbre (por ejemplo, con `sudo apt-get update; sudo apt-get upgrade`).

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

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 de los paquetes vuelvan a estar sincronizadas, debería dejar de ver un mensaje en apt que indica que solo se guardarán los 2 paquetes retenidos, pero que se retendrán todos los paquetes mariadb:

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 están nuevamente sincronizados, lo que también se puede verificar 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 hace creando un archivo en `/etc/apt/preferences.d /` con el siguiente contenido:

Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000

Reemplazar <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 del espejo que está usando en Configuración del sistema >> Software y actualizaciones, o si está usando otra versión de Ubuntu, Synaptic >> Configuración >> Repositorios, o cat /etc/apt/sources.list.

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

(Ver man 5 apt_preferences para 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 como 50_mariadb. Esto identifica el paquete involucrado y permite que otros archivos de preferencias de fijación se coloquen fácilmente antes o después de este archivo en el orden de procesamiento.

Tuve un problema similar en la actualización de Ubuntu 14.10 de 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.

Edición /var/lib/dpkg/status y eliminando las dos instancias de libmysqlclient18 como esto:

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 is a fast, stable and true multi-user, multi-threaded SQL database 
server. SQL (Structured Query Language) is the most popular database query 
language in the world. The main goals of MySQL are speed, robustness and
ease of use.


This package includes the client library.
Homepage: http://dev.mysql.com/
Original-Maintainer: Debian MySQL Maintainers <[email protected]>

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 pasar apt-get problemas hasta que estos dos se eliminaron, ya que se informaron como paquetes rotos antes de que pudiera intentar cualquier otra reparación.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *