[MDEV-4577] MariaDB-compat RPM missing older libs Created: 2013-05-24 Updated: 2013-05-29 Due: 2013-06-24 Resolved: 2013-05-29 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | None |
| Affects Version/s: | 5.5.31 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor |
| Reporter: | Steven Barre | Assignee: | Sergei Golubchik |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | packaging | ||
| Environment: |
CentOS 6.4 |
||
| Description |
|
Why does the compat RPM not include older versions of the library? Percona-Server-shared-compat-5.5.30-rel30.2.509.rhel6.x86_64.rpm http://repo.percona.com/centos/6/os/x86_64/Percona-Server-shared-compat-5.5.30-rel30.2.509.rhel6.x86_64.rpm contains libmysqlclient.so.12 But MariaDB-5.5.31-centos6-i686-compat.rpm http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.31/yum/centos6-x86/rpms/MariaDB-5.5.31-centos6-i686-compat.rpm only contains v15 and v16. Replacing the MariaDB rpm with the Percona one solves the PHP Headers problem.https://kb.askmonty.org/en/installation-issues-with-php5/ |
| Comments |
| Comment by Sergei Golubchik [ 2013-05-24 ] |
|
Client libraries version 12 and 14 are very old. MariaDB 5.1 (the earliest existing version) builds libmysqlclient.so.16. Do you really need libmysqlclient.so.12 or libmysqlclient.so.14? What version of MySQL do they come from? Yes, replacing MariaDB rpm with the Percona one solves the PHP Headers problem. As our KB page suggests "Ways to fix this issue: ... Use your original MySQL client library with the MariaDB". That's what you do when you use Percona rpm, it includes the client library that is very close (if not identical) to MySQL's one. |
| Comment by Steven Barre [ 2013-05-24 ] |
|
Well apparently I do need those very old ones to make PHP happy. It would be nice if it just worked out of the box and I didn't have to manually replace a package with another one. Makes for some interesting Chef recipes ... |
| Comment by Steven Barre [ 2013-05-24 ] |
|
Looking at http://mirror.rackspace.com/centos/6/os/x86_64/Packages/mysql-libs-5.1.66-2.el6_3.x86_64.rpm which I think is the package php-mysql is built against, I see it has only v16. If I remove the file /usr/lib64/libmysqlclient.so.16 then php won't run mysql at all. So I guess the problem is that the libmysqlclient.so.16 provided by MariaDB is different than the one from mysql-libs or Percona-Server-shared-compat |
| Comment by Steven Barre [ 2013-05-24 ] |
|
With libmysqlclient.so.16.0.0 from mysql-libs
With libmysqlclient.so.16.0.0 from Percona-Server-shared-compat
With libmysqlclient.so.16.0.0 from MariaDB-compat
So it seems the problem is actually that your version of that library is 5.3 while everyone else is 5.1. Why call the package "compat" if its not compatible? |
| Comment by Steven Barre [ 2013-05-24 ] |
|
Hmm. You said above that "MariaDB 5.1 (the earliest existing version) builds libmysqlclient.so.16" but it appears its coming from 5.3. Would it be possible to use the 5.1 version of the file instead in the RPM to make it more "compatible" with things like PHP? Or do I just need to find my own workaround to replacing that file with one from some other source. |
| Comment by Sergei Golubchik [ 2013-05-27 ] |
|
It's called "compat" because it's fully compatible with 5.1 libraries. But PHP apparently insists not only on the library being compatible, but also coming from the same minor release version. If you'd like, you can install our 5.1 shared rpm, for example, this one: |
| Comment by Steven Barre [ 2013-05-29 ] |
|
Thanks @serg That works. Also of note for anyone else, you can install a CentOS 5 RPM on CentOS 6. It needs to be forced in, since it conflicts with MariaDB-compat, which you can't remove without everything freaking out. I've since opted to just manually install the one library file. Since I'm using chef I can just use the cookbook_file resource to install a working version. |
| Comment by Steven Barre [ 2013-05-29 ] |
|
Looks like I can't close this myself ... so feel free to close. |
| Comment by Sergei Golubchik [ 2013-05-29 ] |
|
This is PHP/mysqli (when built without mysqlnd) issue — it ignores .so versioning and insists that the libmysqlclient.so should have the same minor version as what mysqli was built with. |