Perl error after update to Percona Server 5.5.36-rel34.0 - missing shared object file

  • Filter
  • Time
  • Show
Clear All
new posts

  • Perl error after update to Percona Server 5.5.36-rel34.0 - missing shared object file

    I recently upgraded my RHEL 6.5 Percona packages to Percona Server 5.5.36-rel34.0. The packages include the following:
    • Percona-Server-server-55-5.5.36-rel34.0.el6.x86_64
    • Percona-Server-client-55-5.5.36-rel34.0.el6.x86_64
    • Percona-Server-shared-55-5.5.36-rel34.0.el6.x86_64

    After the upgrade, I received the following errors:

    [error] [client <...>] install_driver(mysql) failed: Can't load '/opt/perl5/perls/perl-5.8.9/lib/site_perl/5.8.9/x86_64-linux-thread-multi/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.18: cannot open shared object file: No such file or directory at /opt/perl5/perls/perl-5.8.9/lib/5.8.9/x86_64-linux-thread-multi/DynaLoader.pm line 226., referer: <...>
    [error] [client <...>] at (eval 161) line 3., referer: <...>
    [error] [client <...>] Compilation failed in require at (eval 161) line 3., referer: <...>
    [error] [client <...>] Perhaps a required shared library or dll isn't installed where expected, referer: <...>

    Our installation of perl failed to load a driver because these binaries were linked to the libmysqlclient libraries. I found by reading information regarding the new update that the filenames for several libmysqlclient files were changed from libmysqlclient to libperconaserverclient. Those files were renamed due to the install. This includes the following files:
    • /usr/lib64/libperconaserverclient.so
    • /usr/lib64/libperconaserverclient.so.18
    • /usr/lib64/libperconaserverclient.so.18.0.0
    • /usr/lib64/libperconaserverclient_r.so
    • /usr/lib64/libperconaserverclient_r.so.18
    • /usr/lib64/libperconaserverclient_r.so.18.0.0

    All except /usr/lib64/libperconaserverclient.so.18.0.0 are symlinks.

    I was able to resolve my issue by symlinking /usr/lib64/libmysqlclient.so to libperconaserverclient.so.18 (which in turn links to libperconaserverclient.so.18.0.0), but I am not sure if this is the best way to go about this. I have other servers that need to be upgraded, but I wanted to see if there was a best practice for dealing with this filename change before upgrading the others.

    Also, I think it is a bad idea for the files that are installed with the new version of these packages to have symbolic links referencing libmysqlclient.so, which no longer exists. I believe this will cause things to break for a lot of users out there. Basically anything linking to /usr/lib64/libmysqlclient.so will break.since the file being referenced (/usr/lib64/libmysqlclient.so.18.0.0) no longer exists.

    So, what is the best practice for upgrading to the newest version of Percona-Server packages considering the issues mentioned above?


  • #2

    Other options are, to build against libperconaserverclient or install the mysql-libs pacakge from the upstream. Check here.

    For CentOS 6.5 you should use this one: http://dev.mysql.com/get/Downloads/M...2.6.x86_64.rpm
    Also described here: http://www.mysqlperformanceblog.com/...now-available/