Le 16/11/2012 22:46, Daniel Bartholomew a écrit :
The following question has been posted to the Knowledgebase:

https://kb.askmonty.org/en/drop-in-replacement-on-debian/
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Is there a way to make MariaDB install over MySQL on a Debian machine?
I have my puppet master, which is running Debian/sid. It has
puppet-dashboard, which utilizes MySQL 5.5.28. Much to my dismay, I am
unable to install MariaDB over it:

- - - - -
The following packages have unmet dependencies:
 libmariadbclient18 : Depends: libmysqlclient18
   (= 5.5.28-mariadb1~wheezy) but 5.5.28+dfsg-1 is to be installed

E: Unable to correct problems, you have held broken packages.
- - - - -


But if I try to uninstall the parts of MySQL, then apt wishes to
uninstall everything, up to and including puppet-dashboard:


- - - - -
The following packages were automatically installed and are no longer
required:
  dbconfig-common libaio1 libhttpclient-ruby1.8
  mysql-server-core-5.5 rake ruby-dbi ruby-deprecated unzip zip
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  libdbd-mysql-perl libdbd-mysql-ruby libmysqlclient18 mysql-client
  mysql-client-5.5 mysql-server mysql-server-5.5 puppet-dashboard
  ruby-dbd-mysql ruby-mysql
- - - - -

This is unacceptable for a live box... Is there something else I can do
to make the install less painful?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Thanks.

It's due to the fact that the libmysqlclient18 package from the Wheezy MySQL package set is conflicting with the one from the Mariadb set.
While the Maria package should have an higher "priority" if both are to be choosen it doesnt, so it falls back on the wrong one, this can be verified this way :
root@servor:~# apt-cache policy libmysqlclient18
libmysqlclient18:
  Installed: 5.5.24+dfsg-9
  Candidate: 5.5.24+dfsg-9
  Version table:
     5.5.28+dfsg-1 0
        996 http://ftp2.fr.debian.org/debian/ sid/main amd64 Packages
     5.5.28-mariadb1~wheezy 0
        500 http://mirror2.hs-esslingen.de/mariadb/repo/5.5/debian/ wheezy/main amd64 Packages
 *** 5.5.24+dfsg-9 0
        999 http://cdn.debian.net/debian/ wheezy/main amd64 Packages
        100 /var/lib/dpkg/status

Candidate should be 5.5.28-mariadb1~wheezy in that case, you can manually pin the Mariadb package with an higher priority but it should be fixed upstream so there is no need to force packages priorities.

Here is a quick fix (don't forget to ajust to the Maria mirror you are using) :
echo -e "Package: libmysqlclient18\nPin: origin mirror2.hs-esslingen.de\nPin-Priority: 1000" > /etc/apt/preferences.d/mariadb-mysqlclient18

Then you can verify with "apt-cache policy libmysqlclient18" that the candidate package is the right one this time and the package installation should now work well.


ps: same kind of conflict (on the same package) happens when you have both Percona and Maria5.5 repositories on a Squeeze, it tries to install the Percona libmysqlclient18 package rather then the Maria one.