Percona XtraDB Cluster - HA scalable solution for MySQL

Painful Yum dependencies on CentOS6.3

Reported by Ryan Lowe on 2012-07-31
40
This bug affects 8 people
Affects Status Importance Assigned to Milestone
Percona Server
Status tracked in 5.6
5.1
High
Ignacio Nin
5.5
High
Ignacio Nin
5.6
High
Ignacio Nin
Percona Toolkit
High
Daniel Nichter
Percona XtraDB Cluster
High
Ignacio Nin

Bug Description

(Probably a Percona-Server packaging issue, but reporting it here because it manifests in a percona-toolkit install)

I have a stock CentOS6.3 install

%> cat /etc/centos-release
CentOS release 6.3 (Final)

%> uname -r
2.6.32-220.el6.x86_64

With the Percona Yum repository package:

%> yum info percona-release
Loaded plugins: fastestmirror, priorities, security
Loading mirror speeds from cached hostfile
 * base: mirror.stanford.edu
 * extras: mirrors.kernel.org
 * updates: mirrors.kernel.org
68 packages excluded due to repository priority protections
Installed Packages
Name : percona-release
Arch : x86_64
Version : 0.0
Release : 1
Size : 3.6 k
Repo : installed
Summary : Percona RPM repository
URL : http://www.percona.com/percona-lab.html
License : GPL version 2
Description : Percona release file. This package contains yum
            : configuration for the Percona RPM Repository, as well as the public
            : GPG keys used to sign them.

I have the following packages installed:

%> rpm -qa |grep -i percona
Percona-Server-client-55-5.5.25a-rel27.1.277.rhel6.x86_64
percona-release-0.0-1.x86_64
Percona-Server-shared-55-5.5.25a-rel27.1.277.rhel6.x86_64
Percona-Server-server-55-5.5.25a-rel27.1.277.rhel6.x86_64

(installed via: `yum install Percona-Server-client-55 Percona-Server-server-55`)

Trying to install percona-toolkit, I get the following:

%> yum install percona-toolkit
...
Transaction Check Error:
  file /usr/lib64/libmysqlclient.so from install of Percona-Server-shared-51-5.1.63-rel13.4.443.rhel6.x86_64 conflicts with file from package Percona-Server-shared-55-5.5.25a-rel27.1.277.rhel6.x86_64
  file /usr/lib64/libmysqlclient_r.so from install of Percona-Server-shared-51-5.1.63-rel13.4.443.rhel6.x86_64 conflicts with file from package Percona-Server-shared-55-5.5.25a-rel27.1.277.rhel6.x86_64

Error Summary
-------------

If I look at:

%> yum deplist perl-DBD-MySQL
...
  dependency: libmysqlclient.so.16(libmysqlclient_16)(64bit)
   provider: mysql-libs.x86_64 5.1.61-4.el6
   provider: Percona-Server-shared-51.x86_64 5.1.63-rel13.4.443.rhel6
   provider: Percona-Server-shared-compat.x86_64 5.5.25a-rel27.1.277.rhel6
...

We see that perl-DBD-MySQL requires libmysqlclient.so.16, which is available via Percona-Server-shared-51 but NOT Percona-Server-shared-55.

I can get around this by installing packages in the following order:

%> rpm -qa |grep -i percona
percona-release-0.0-1.x86_64

%> yum install Percona-Server-shared-compat
...
%> yum install Percona-Server-client-55 Percona-Server-server-55 percona-toolkit
...

But it's a pain to have to do this every time, I'd rather have the dependencies *just work*

Jaime Crespo (jynus) wrote :

I can confirm this "bug" (annoyance, more than anything) on a fresh install of CentOS 6.3. Trying to install the whole package set (5.5 version) (Percona Server, XtraBackup and percona-toolkit) have undesired lateral effects by default: It tries to delete (ana)cron - because it depends on Postfix, which depends on what 5.1 server provides and also creates a conflict between Percona-Server-shared-51 and Percona-Server-shared-55, as this bug reports.

I can also confirm that the workaround solves the dependency problem.

I do the following generally and it works fine:

rpm --nodeps -e mysql-libs
yum install 'Percona-Server-*55' percona-toolkit xtrabackup
yum install Percona-Server-55-debuginfo

The issue I see in the description is that percona-toolkit requires mysql client libs but ends up pulling Percona-Server-51 which introduces conflict. I usually end up installing shared-compat with others.

Problems being:

1. RPM lacks anything like package A replaces package B kind of thing (or is there something similar?), so 'rpm -e --nodeps mysql-libs' required.

2. We can have groups like the ones already present -- 'MySQL Database server' and 'MySQL Database client' so that install hackery can be avoided.

Daniel Nichter (daniel-nichter) wrote :

Hi Ryan. :-) We recently had a long internal email thread about this. You know I don't know much about packaging, which is why I've asked Brian to work with Ignacio to take over our packaging. So, the hope is to have that done by next release, and whatever these problems are be solved (I don't know much about package dependencies and how one pkg can substitute for another, etc., so I'm trusting other experts know).

Changed in percona-toolkit:
status: New → Confirmed
importance: Undecided → High
assignee: nobody → Brian Fraser (fraserbn)
tags: added: release
Changed in percona-toolkit:
milestone: none → 2.1.4
Brian Fraser (fraserbn) on 2012-08-27
Changed in percona-toolkit:
assignee: Brian Fraser (fraserbn) → Ignacio Nin (ignacio-nin)
Download full text (3.8 KiB)

This is a bug with Percona-Server and not percona-toolkit actually.

sudo repoquery --provides Percona-Server-shared-55
    Percona-Server-shared-55 = 5.5.27-rel28.1.296.rhel6
    Percona-Server-shared-55(x86-64) = 5.5.27-rel28.1.296.rhel6
    libmysqlclient.so.18()(64bit)
    libtool(/usr/lib64/mysql/plugin/libfnv1a_udf.la)
    libtool(/usr/lib64/mysql/plugin/libfnv_udf.la)
    libtool(/usr/lib64/mysql/plugin/libmurmur_udf.la)
    mysql-shared

raghu archie:~ [77]% sudo repoquery --provides Percona-Server-shared-51
    MySQL-shared
    Percona-Server-shared-51 = 5.1.65-rel14.0.475.rhel6
    Percona-Server-shared-51(x86-64) = 5.1.65-rel14.0.475.rhel6
    Percona-XtraDB-shared
    libmysqlclient.so.16()(64bit)
    libmysqlclient.so.16(libmysqlclient_16)(64bit)
    libmysqlclient_r.so.16()(64bit)
    libmysqlclient_r.so.16(libmysqlclient_16)(64bit)
    mysql-libs
    mysql-shared

raghu archie:~ [78]% sudo repoquery --provides Percona-Server-shared-compat
    MySQL-shared
    Percona-Server-shared-compat = 5.5.27-rel28.1.296.rhel6
    Percona-Server-shared-compat(x86-64) = 5.5.27-rel28.1.296.rhel6
    libmysqlclient.so.12()(64bit)
    libmysqlclient.so.14()(64bit)
    libmysqlclient.so.14(libmysqlclient_14)(64bit)
    libmysqlclient.so.15()(64bit)
    libmysqlclient.so.15(libmysqlclient_15)(64bit)
    libmysqlclient.so.16()(64bit)
    libmysqlclient.so.16(libmysqlclient_16)(64bit)
    libmysqlclient_r.so.12()(64bit)
    libmysqlclient_r.so.14()(64bit)
    libmysqlclient_r.so.14(libmysqlclient_14)(64bit)
    libmysqlclient_r.so.15()(64bit)
    libmysqlclient_r.so.15(libmysqlclient_15)(64bit)
    libmysqlclient_r.so.16()(64bit)
    libmysqlclient_r.so.16(libmysqlclient_16)(64bit)
    mysql-libs

sudo repoquery --disablerepo=percona --provides mysql-libs
    config(mysql-libs) = 5.1.61-4.el6
    libmysqlclient.so.16
    libmysqlclient.so.16(libmysqlclient_16)
    libmysqlclient_r.so.16
    libmysqlclient_r.so.16(libmysqlclient_16)
    mysql-libs = 5.1.61-4.el6
    mysql-libs(x86-32) = 5.1.61-4.el6
    config(mysql-libs) = 5.1.61-4.el6
    libmysqlclient.so.16()(64bit)
    libmysqlclient.so.16(libmysqlclient_16)(64bit)
    libmysqlclient_r.so.16()(64bit)
    libmysqlclient_r.so.16(libmysqlclient_16)(64bit)
    mysql-libs = 5.1.61-4.el6
    mysql-libs(x86-64) = 5.1.61-4.el6

sudo repoquery --requires perl-DBD-MySQL
    libc.so.6()(64bit)
    libc.so.6(GLIBC_2.2.5)(64bit)
    libc.so.6(GLIBC_2.3)(64bit)
    libc.so.6(GLIBC_2.3.4)(64bit)
    libc.so.6(GLIBC_2.4)(64bit)
    libcrypt.so.1()(64bit)
    libcrypto.so.10()(64bit)
    libm.so.6()(64bit)
    libmysqlclient.so.16()(64bit)
    libmysqlclient.so.16(libmysqlclient_16)(64bit)
    libnsl.so.1()(64bit)
    libssl.so.10()(64bit)
    libz.so.1()(64bit)
    perl(:MODULE_COMPAT_5.10.1)
    perl(Carp)
    perl(DBI)
    perl(DBI::Const::GetInfoType)
    perl(DynaLoader)
    perl(strict)
    perl(vars)
    rtld(GNU_HASH)

So, perl-DBD-MySQL requires libmysqlclient.so.16 which is provided by mysql-libs, Percona-Server-shared-compat and Percona-Server-shared-55.

Now, mysql-libs is out of picture if Percona is installed since it is obsoleted.

That leaves, Percona-Server-shared-55 and Percona-Server-share...

Read more...

tags: added: pkg
Brian Fraser (fraserbn) on 2012-09-19
no longer affects: percona-toolkit/2.1
Changed in percona-toolkit:
milestone: 2.1.4 → 2.1.5
milestone: 2.1.5 → 2.1.4
Brian Fraser (fraserbn) wrote :

After talking to Ignacio, I'm untargetting this for 2.1.4, and retargetting it in 2.1.5 instead.

tags: added: repo
removed: pkg
Alexey Bychko (abychko) on 2013-01-23
tags: added: pkg
Alexey Bychko (abychko) wrote :

see http://yum.baseurl.org/wiki/CompareProviders

When yum is depsolving and it finds that a requirement is provided for by more than one pkg it has to make a choice about which pkg to install. At one point in time it decided by choosing the 'first' one.

Alexey Bychko (abychko) wrote :

according to link above, this is not a bug, but just documented yum behavior. thinking on solution

no longer affects: percona-toolkit/2.1
Changed in percona-toolkit:
milestone: 2.2.1 → none
status: Confirmed → In Progress
assignee: Ignacio Nin (ignacio-nin) → Daniel Nichter (daniel-nichter)
Alexey Bychko (abychko) on 2013-02-07
Changed in percona-toolkit:
status: In Progress → Fix Committed
Alexey Bychko (abychko) on 2013-02-18
Changed in percona-toolkit:
status: Fix Committed → In Progress
Changed in percona-xtradb-cluster:
importance: Undecided → High
status: New → Fix Committed
assignee: nobody → Ignacio Nin (ignacio-nin)
Ignacio Nin (ignacio-nin) wrote :

I've submitted a patch (linked branches) to each of the 5.0, 5.1, 5.5 and PXC branches that changes our shared packages to only include versioned libraries, following the model of the CentOS packages. This effectively makes the shared packages not conflict at the file level when installed in different combinations, allowing percona-toolkit to depend on any of them while at the same time permitting an installation of any suite of PS/PXC. Note that in debian we follow this same model. Refer to the commit messages for details.

The packages are currently up in the percona-testing repo. I've tested each suite in rhel6 and rhel5 with percona-toolkit (including PXC) and this bug seems to be fixed.

Changed in percona-server:
milestone: none → 5.5.30-30.2
Changed in percona-xtradb-cluster:
milestone: none → 5.5.30-23.7.3
Daniel Nichter (daniel-nichter) wrote :

As for Percona Toolkit, the fix was done indirectly via the Percona Server packages being fixed. So this was basically fixed in PT 2.2.

Changed in percona-toolkit:
status: In Progress → Fix Released
Changed in percona-xtradb-cluster:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers