Announcement

Announcement Module
Collapse
No announcement yet.

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

Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • 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?

    Thanks.

  • #2
    Hi,

    Other options are, to build against libperconaserverclient or install the mysql-libs pacakge from the upstream. Check here.
    http://www.percona.com/doc/percona-s...naserverclient

    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/

    Comment

    Working...
    X