はじめに
perlbrew x cpanm x あとはいろいろ
な構成でアプリを作っていたのですが、
DBD::mysql
を入れようとするとこんなエラーがでるときがあります。
! Installing DBD::mysql failed. See /home/hoge/.cpanm/work/1436686165.21154/build.log for details. Retry with --force to force install it.
そんなときの対処法。
エラーを見てみる
$ cpanm DBD::mysql --> Working on DBD::mysql Fetching http://www.cpan.org/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.031.tar.gz ... OK Configuring DBD-mysql-4.031 ... OK Building and testing DBD-mysql-4.031 ... FAIL ! Installing DBD::mysql failed. See /home/hoge/.cpanm/work/1436686165.21154/build.log for details. Retry with --force to force install it.
対処してみる
昔に対処した記憶があったので、下記サイトを参考に対処してみることに。
しかし、/home/hoge/.cpanm/work/1436686010.20691/DBD-mysql-4.031/mysql.xs
の
該当行を見てみたところすでにパッチがあてられているようです。
DBD-mysql-4.031
ではすでに上記の問題は解消すみのようですね。
別の対処方法を探す
しかしながらエラーの詳細を追うために
上記参考リンクの手順のとおりperl Makefile.PL
のあとにmake
をしてみるとエラー出力が多発します。
$ make cc -c -I/home/hoge/perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/x86_64-linux/auto/DBI -I/usr/include/mysql -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -fPIC -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -DMY_PTHREAD_FASTMUTEX=1 -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"4.031\" -DXS_VERSION=\"4.031\" -fPIC "-I/home/hoge/perl5/perlbrew/perls/perl-5.16.3/lib/5.16.3/x86_64-linux/CORE" dbdimp.c In file included from dbdimp.c:20: dbdimp.h:21:49: error: mysql.h: No such file or directory dbdimp.h:22:45: error: mysqld_error.h: No such file or directory dbdimp.h:24:49: error: errmsg.h: No such file or directory In file included from dbdimp.c:20: dbdimp.h:172: error: expected specifier-qualifier-list before 'MYSQL' dbdimp.h:271: error: expected specifier-qualifier-list before 'MYSQL_RES' In file included from dbdimp.c:20: dbdimp.h:332: error: expected ')' before '*' token dbdimp.h:335: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'mysql_st_internal_execute' dbdimp.h:371: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token ・・・省略・・・
最初のエラーmysql.h: No such file or directory
が特に怪しいので
そちらで調べてみたらありました。
ヘッダファイルがインストールされていなかった?らしい。
ってとこですね。
対処する
対処するといってもmysql-devel
をいれただけで終わりでしたー
$ sudo yum install mysql-devel $ cpanm DBD::mysql --> Working on DBD::mysql Fetching http://www.cpan.org/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.031.tar.gz ... OK Configuring DBD-mysql-4.031 ... OK Building and testing DBD-mysql-4.031 ... OK Successfully installed DBD-mysql-4.031 1 distribution installed
おわり
mysql-devel
入れて無いとかかなり初歩的なことに思えても
動いてるほうは昔一度入れたっきり覚えてないので新たに環境を作るときは毎回つまづきますね(><)