cpanm で DBD::mysql をインストールする
cpanm で DBI をインストールした際に、特に気になるエラーがなかったのに、DBI 経由で mysql に接続をすると、エラーが出た。
調べてみると、DBD::mysql が見つからないとエラーが出る。
% perl -MDBD::mysql -le 1 Can't locate DBD/mysql.pm in @INC (@INC contains: /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.2/lib/5.12.2/darwin-2level /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.2/lib/5.12.2 /Users/littlebuddha/perl5/perlbrew/perls/p erl-5.12.2/lib/site_perl/5.12.2/darwin-2level /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.2/lib/site_perl/5.12.2 .). BEGIN failed--compilation aborted.
やっぱりやってしまう
半分だめだろうと思いつつも、cpanm で DBD::mysql のインストールを試みる。
% cpanm DBD::mysql --> Working on DBD::mysql Fetching http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.018.tar.gz ... OK Configuring DBD-mysql-4.018 ... N/A ! Configure failed for DBD-mysql-4.018. See /Users/littlebuddha/.cpanm/build.log for details.
が、やはり失敗した。
mysql_config が見つからないのが原因
cpanm 経由でインストールをするときに、mysql_config が見つからないのが原因になる。
普通は、
% which mysql_config /usr/local/bin/mysql_config
を使うが、MySQL は MacPorts でインストールをしているので、mysql_config ではなく mysql_config5 という名前になっている。
% which mysql_config5 /opt/local/bin/mysql_config5
直接 Makefile.pm を編集する
まずは DBD::mysql のソースが展開されているディレクトリに移動する。
% cd ~/.cpanm/latest-build/DBD-mysql-4.018/
そうしたら、オプションを付けて実行する。
% perl Makefile.PL --mysql_config=/opt/local/bin/mysql_config5 Checking if your kit is complete... Looks good Using DBI 1.615 (for perl 5.012001 on darwin-2level) installed in /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1/lib/site_perl/5.12.1/darwin-2level/auto/DBI/ Writing Makefile for DBD::mysql
と、Makefile の生成が成功したようだ。
% less Makefile # --- MakeMaker constants section: AR_STATIC_ARGS = cr DIRFILESEP = / DFSEP = $(DIRFILESEP) NAME = DBD::mysql NAME_SYM = DBD_mysql VERSION = 4.018 VERSION_MACRO = VERSION VERSION_SYM = 4_018 DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\" XS_VERSION = 4.018 XS_VERSION_MACRO = XS_VERSION XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\" INST_ARCHLIB = blib/arch INST_SCRIPT = blib/script INST_BIN = blib/bin INST_LIB = blib/lib INST_MAN1DIR = blib/man1 INST_MAN3DIR = blib/man3 MAN1EXT = 1 MAN3EXT = 3 INSTALLDIRS = site DESTDIR = PREFIX = $(SITEPREFIX) PERLPREFIX = /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1 SITEPREFIX = /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1
ここまできたら、再インストールをしてみる
% make && make test % make install Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Installing /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1/lib/site_perl/5.12.1/darwin-2level/auto/DBD/mysql/mysql.bs Installing /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1/lib/site_perl/5.12.1/darwin-2level/auto/DBD/mysql/mysql.bundle Installing /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1/lib/site_perl/5.12.1/darwin-2level/Bundle/DBD/mysql.pm Installing /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1/lib/site_perl/5.12.1/darwin-2level/DBD/mysql.pm Installing /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1/lib/site_perl/5.12.1/darwin-2level/DBD/mysql/GetInfo.pm Installing /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1/lib/site_perl/5.12.1/darwin-2level/DBD/mysql/INSTALL.pod Installing /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1/man/man3/Bundle::DBD::mysql.3 Installing /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1/man/man3/DBD::mysql.3 Installing /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1/man/man3/DBD::mysql::INSTALL.3 Appending installation info to /Users/littlebuddha/perl5/perlbrew/perls/perl-5.12.1/lib/5.12.1/darwin-2level/perllocal.pod
最後に確認
% perl -MDBD::mysql -le 1
%
エラーが表示されないので、正常にインストールされた。