Mise à jour de MariaDB, pas que du bonheur

J’ai remplacé MySQL par MariaDB pour mes sites web et applications de gestion en PHP. Cela fait plusieurs fois que je me retrouve avec mes sites hors service suite à une mise à jour de MariaDB. Il faut dire que j’applique les mises à jour de sécurité de façon automatique sur mes serveurs avec cron-apt, car je suis un gros fainéant.

Je sais que je prends un risque en procédant ainsi. Mais dans 95% des cas, je n’ai pas de problèmes. Et comme je gère trois serveurs dédiés et une bonne vingtaine de machines virtuelles, cela m’économise tout de même pas mal de temps. D’ailleurs seul MariaDB m’a posé des soucis…

Jusqu’à présent j’avais réussi à réparer le problème tant bien que mal. Ce matin ce fut un peu plus difficile.

À la base une mise à jour qui signale un problème de dépendance (extrait du log de mise à jour automatique) :

The following packages will be upgraded:
  libmysqlclient18 mysql-common 
2 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 728 kB of archives. After unpacking 3406 kB will be used.
The following packages have unmet dependencies:
 libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.41+maria-1~wheezy) but 5.5.43-0+deb7u1 is to be installed.
The following actions will resolve these dependencies:
Remove the following packages:              
1)     libmariadbclient18                        
2)     mariadb-client-5.5                        
3)     mariadb-client-core-5.5                   
4)     mariadb-server                            
5)     mariadb-server-5.5                        
6)     mariadb-server-core-5.5                   
     Leave the following dependencies unresolved:
7)     phpmyadmin recommends mysql-client        

The following packages will be REMOVED:
  libmariadbclient18{a} mariadb-client-5.5{a} mariadb-client-core-5.5{a} 
  mariadb-server{a} mariadb-server-5.5{a} mariadb-server-core-5.5{a} 
The following packages will be upgraded:
  libmysqlclient18 mysql-common

Et là comme vous le voyez c’est le drame, MariaDB est désinstallé

En cherchant un peu, je suis tombé sur cette note sur le site de MariaDB traitant justement de soucis de dépendances sur Debian et Ubuntu.

J’ai donc suivi les instructions avec quelques adaptations. Tout d’abord la version 5.5.32 n’ést plus en ligne sur le serveur FTP indiqué, il faut prendre la 5.5.42. Jj’ai mis en commentaires les dépôts standards de MariaDB puis ajouté la ligne suivante dans mon fichier sources.list :

deb http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.42/repo/debian wheezy main

Ensuite un apt-get update pour mettre à jour le catalogue des packages. À ce stade-là, il n’est toujours pas possible de réinstaller MariaDB:

# apt-get install mariadb-server mariadb-client
Reading package lists... Done
Building dependency tree       
Reading state information... Done
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-client : Depends: mariadb-client-5.5 (= 5.5.42+maria-1~wheezy) but it is not going to be installed
 mariadb-server : Depends: mariadb-server-5.5 (= 5.5.42+maria-1~wheezy) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Je suis les instructions du scénario 2 du tutoriel avec :

#apt-get install   libmysqlclient18=5.5.42+maria-1~wheezy   mariadb-client-5.5=5.5.42+maria-1~wheezy   mariadb-client-core-5.5=5.5.42+maria-1~wheezy
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libmariadbclient18
Suggested packages:
  libterm-readkey-perl
The following NEW packages will be installed:
  libmariadbclient18 mariadb-client-5.5 mariadb-client-core-5.5
The following packages will be DOWNGRADED:
  libmysqlclient18
0 upgraded, 3 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
Need to get 7649 kB of archives.
After this operation, 24.6 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.42/repo/debian/ wheezy/main libmysqlclient18 i386 5.5.42+maria-1~wheezy [2924 B]
Get:2 http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.42/repo/debian/ wheezy/main libmariadbclient18 i386 5.5.42+maria-1~wheezy [836 kB]
Get:3 http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.42/repo/debian/ wheezy/main mariadb-client-core-5.5 i386 5.5.42+maria-1~wheezy [1708 kB]
Get:4 http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.42/repo/debian/ wheezy/main mariadb-client-5.5 i386 5.5.42+maria-1~wheezy [5102 kB]
Fetched 7649 kB in 5s (1508 kB/s)             
dpkg: warning: downgrading libmysqlclient18:i386 from 5.5.43-0+deb7u1 to 5.5.42+maria-1~wheezy
(Reading database ... 28653 files and directories currently installed.)
Preparing to replace libmysqlclient18:i386 5.5.43-0+deb7u1 (using .../libmysqlclient18_5.5.42+maria-1~wheezy_i386.deb) ...
Unpacking replacement libmysqlclient18 ...
Selecting previously unselected package libmariadbclient18.
Unpacking libmariadbclient18 (from .../libmariadbclient18_5.5.42+maria-1~wheezy_i386.deb) ...
Selecting previously unselected package mariadb-client-core-5.5.
Unpacking mariadb-client-core-5.5 (from .../mariadb-client-core-5.5_5.5.42+maria-1~wheezy_i386.deb) ...
Selecting previously unselected package mariadb-client-5.5.
Unpacking mariadb-client-5.5 (from .../mariadb-client-5.5_5.5.42+maria-1~wheezy_i386.deb) ...
Processing triggers for man-db ...
Setting up libmysqlclient18 (5.5.42+maria-1~wheezy) ...
Setting up libmariadbclient18 (5.5.42+maria-1~wheezy) ...
Setting up mariadb-client-core-5.5 (5.5.42+maria-1~wheezy) ...
Setting up mariadb-client-5.5 (5.5.42+maria-1~wheezy) ...

Je peux maintenant à nouveau installer MariaDB avec :

# apt-get install mariadb-server mariadb-client

Je dois indiquer le mot de passe du compte root de MariaDB (je remet le même que celui existant, important !). L’installation reprend alors les bases existantes et tout refonctionne. J’ai ensuite remis les dépôts standards.

deb http://mariadb.biz.net.id/repo/5.5/debian wheezy main
deb-src http://mariadb.biz.net.id/repo/5.5/debian wheezy main

Un upgrade me signale cependant

# apt-get -V upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages have been kept back:
   libmysqlclient18 (5.5.42+maria-1~wheezy => 5.5.43-0+deb7u1)
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

J’en reste là pour l’instant bien que la situation ne me semble pas encore très saine. Si vous avez des idées, ou déjà rencontré le problème, merci pour vos suggestions et commentaires.