1

I'm trying to install something on my server that requires mysqlclient, but looking at my RPM package list I have it ("MySQL-client-5.0.91-0.glibc23"). Doing a locate on libmysqlclient gives me this:

[root@host.domain.net] ~ >> locate libmysqlclient
/usr/lib64/libmysqlclient.so
/usr/lib64/libmysqlclient.so.15
/usr/lib64/libmysqlclient.so.15.0.0
/usr/lib64/libmysqlclient_r.so
/usr/lib64/libmysqlclient_r.so.15
/usr/lib64/libmysqlclient_r.so.15.0.0
/usr/lib64/mysql/libmysqlclient.a
/usr/lib64/mysql/libmysqlclient.la
/usr/lib64/mysql/libmysqlclient.so
/usr/lib64/mysql/libmysqlclient_r.a
/usr/lib64/mysql/libmysqlclient_r.la
/usr/lib64/mysql/libmysqlclient_r.so
/usr/local/cpanel/lib64/libmysqlclient.so.14

For some reason it looks like I'm missing libmysqlclient.so.16. Does anyone know why this could be? How do I go about getting it? I'm currently running CentOS 5.

Thanks a lot.

timetofly
  • 205
  • 3
  • 8

1 Answers1

0

libmysqlclient.so.16 is provided by MySQL 5.1 packages. There are two solutions here:

  1. Install MySQL 5.1 from a third party repository;
  2. Install the package with --nodeps and see if it can work with MySQL 5.0 instead of 5.1 .
Robert Munteanu
  • 1,644
  • 5
  • 23
  • 41
  • 1
    Re 2: No, if a library is listed as a requirement then it really is needed. – Ignacio Vazquez-Abrams Oct 20 '10 at 08:18
  • The other way of looking at this is that the package you're trying to install isn't intended for use on CentOS/RHEL 5. Where did the package come from, and does the vendor / distributor / project provide one intended for CentOS5? The software may not actually need MySQL 5.1 / libmysqlclient-16 features, but the package requires them because it's intended for use on, eg, Fedora 13, which has that version; in that case, a package intended for CentOS5 may exist. If the software really does need MySQL 5.1, then your options are to install a second MySQL or wait for CentOS 6 (any day now!). – MadHatter Oct 20 '10 at 08:53
  • @Ignacio : In my experience it depends on the quality of the package. It might be that it simply describes what the packager has been able to test on. Not all packages are RHEL-quality. – Robert Munteanu Oct 20 '10 at 08:57
  • @Robert: In about 99.99% of the cases where a library is listed as a requirement, it is there because `rpmbuild` itself detected, via `ldd` or `objdump`, that the library is needed by a binary at load time. – Ignacio Vazquez-Abrams Oct 20 '10 at 09:02
  • @Ignacio: But doesn't that depend on the local setup of the packager? If it finds `libmysqlclient.so.16` , it has no way of knowing whether a plain `libmysqlclient.so` will work or not. – Robert Munteanu Oct 20 '10 at 09:05
  • @Robert: `lib*.so` will *never* work. Unversioned libraries are symlinks found in development packages which point to the real, versioned library they were created for. When the binary is built against it, it actually links against the versioned library. – Ignacio Vazquez-Abrams Oct 20 '10 at 09:08