読者です 読者をやめる 読者になる 読者になる

tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【perl】DBI::mysqlでmysqlに接続すると`[error] install_driver(mysql) failed: Can't load '/home/hogeperl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/x86_64-linux/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.16`と表示されるやーつの対応

はじめに

perlbrew x cpanm x あとはいろいろな構成でアプリを作っていたのですが、 DBD::mysqlperl->mysql接続しようとするとこんなエラーが出ることがあります。

[Mon Oct 12 20:16:59 2015] [error] install_driver(mysql) failed: Can't load '/home/hogeperl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/x86_64-linux/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.16: cannot open shared object file: No such file or directory at /home/hogeperl5/perlbrew/perls/perl-5.18.4/lib/5.18.4/x86_64-linux/DynaLoader.pm line 190, line 309. at (eval 96) line 3. Compilation failed in require at (eval 96) line 3. Perhaps a required shared library or dll isn't installed where expected at lib/hogeModule/Information.pm line 26.

そんなときの対処方

対処

対処方法はこちらを参考にさせていたきました。
http://unix.stackexchange.com/questions/82076/error-while-installing-perl-dbd-mysql

どうやらlibmysqlclient.so.16がないっぽかったのですが、locateすると出てきたのでいまいちよくわかっていません。

# locateしてみるとあるっぽい
$ locate libmysqlclient.so.16
/usr/lib64/mysql/libmysqlclient.so.16
/usr/lib64/mysql/libmysqlclient.so.16.0.0

# しかし該当ディレクトリをlsすると見当たらない
$ ls -al /usr/lib64/mysql/
-rw-r--r--   1 root root 17419410 Sep 19 00:22 libmysqlclient.a
lrwxrwxrwx   1 root root       20 Oct 12 20:15 libmysqlclient.so -> libmysqlclient.so.18
lrwxrwxrwx   1 root root       24 Oct 12 20:15 libmysqlclient.so.18 -> libmysqlclient.so.18.0.0
-rwxr-xr-x   1 root root  7810465 Sep 19 00:22 libmysqlclient.so.18.0.0
lrwxrwxrwx   1 root root       16 Oct 12 20:15 libmysqlclient_r.a -> libmysqlclient.a
lrwxrwxrwx   1 root root       17 Oct 12 20:15 libmysqlclient_r.so -> libmysqlclient.so
lrwxrwxrwx   1 root root       20 Oct 12 20:15 libmysqlclient_r.so.18 -> libmysqlclient.so.18
lrwxrwxrwx   1 root root       24 Oct 12 20:15 libmysqlclient_r.so.18.0.0 -> libmysqlclient.so.18.0.0

# とりあえず対処
$ sudo yum install perl-DBD-MySQL.x86_64

# lsで確認
$ ls -al /usr/lib64/mysql/
-rw-r--r--   1 root root 17419410 Sep 19 00:22 libmysqlclient.a
lrwxrwxrwx   1 root root       20 Oct 12 20:15 libmysqlclient.so -> libmysqlclient.so.18
lrwxrwxrwx   1 root root       24 Oct 12 20:30 libmysqlclient.so.16 -> libmysqlclient.so.16.0.0
-rwxr-xr-x   1 root root  2788228 Sep 19 00:23 libmysqlclient.so.16.0.0
lrwxrwxrwx   1 root root       24 Oct 12 20:15 libmysqlclient.so.18 -> libmysqlclient.so.18.0.0
-rwxr-xr-x   1 root root  7810465 Sep 19 00:22 libmysqlclient.so.18.0.0
lrwxrwxrwx   1 root root       16 Oct 12 20:15 libmysqlclient_r.a -> libmysqlclient.a
lrwxrwxrwx   1 root root       17 Oct 12 20:15 libmysqlclient_r.so -> libmysqlclient.so
lrwxrwxrwx   1 root root       26 Oct 12 20:30 libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
-rwxr-xr-x   1 root root  2820538 Sep 19 00:23 libmysqlclient_r.so.16.0.0
lrwxrwxrwx   1 root root       20 Oct 12 20:15 libmysqlclient_r.so.18 -> libmysqlclient.so.18
lrwxrwxrwx   1 root root       24 Oct 12 20:15 libmysqlclient_r.so.18.0.0 -> libmysqlclient.so.18.0.0
-rw-r--r--   1 root root     9904 Sep 19 00:21 libmysqlservices.a

おわり

とりあえず対処できちゃったのであまり調べてませんがメモ(><)