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-Priority
este 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_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 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.
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-gtk
para abrir Fuentes de software . Si recibe algún error / mensaje en el comando que mencioné anteriormente, publíquelo en su pregunta.