Mac OS X/DBD::mysqlを入れる

(あ、これも先週のですー。公開ボタン押し忘れ。)


いやー、参りました!perlモジュールのDBD::mysqlをインストールしたいのにできないー、という泥沼にはまってました。しかし〜、下記URLを参考にしたら入りましたー(入ったのか?)。以下に、私のしたことも書いておきますー。


参考URLはここ↓
MySQL :: MySQL 5.6 リファレンスマニュアル :: 2.13.1 Unix に Perl をインストールする


まず、cpanコマンドにいきます。

shell> sudo perl -MCPAN -e shell

もしくは、

shell> sudo cpan

次に、依存モジュールのDBIをインストールし、次に目的のブツであるDBD::mysqlをインストール。
※Data::Dumperも依存モジュールらしいので、入ってるかどうか確認してから進んで下さい。

cpan> install DBI
cpan> install DBD::mysql

しかし、ほぼ確実に以下のようなエラーが出ると思います。

[test_dynamic] Error 255
  CAPTTOFU/DBD-mysql-4.012.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports CAPTTOFU/DBD-mysql-4.012.tar.gz
Running make install
  make test had returned bad status, won't install without force
Failed during this command:
 CAPTTOFU/DBD-mysql-4.012.tar.gz              : make_test NO

そんなときは、forceを付け加えてDBD::mysqlをインストール。

cpan> force install DBD::mysql

このforce、「エラーを無視してねー」っていう命令らしい。参考URLによると、DBI::mysqlのインストール中には様々なテストが行われているらしく、このテストに失敗するとエラーになってインストールできなくなっちゃうそう。そこで、forceの出番らしい。


でもね、これでインストールした私は、「perldoc DBD::mysql」とコマンドを打ったときにこんなエラーがでる。

<standard input>:448: warning [p 5, 3.7i]: can't break line
<standard input>:472: warning [p 5, 8.0i]: can't break line
<standard input>:485: warning [p 5, 10.3i]: can't break line

そして、DBD::mysqlを使用したcgiperlコマンドで回すと、こんなになる。

dyld: lazy symbol binding failed: Symbol not found: _mysql_init
  Referenced from: /Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle
  Expected in: dynamic lookup

dyld: Symbol not found: _mysql_init
  Referenced from: /Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle
  Expected in: dynamic lookup

Trace/BPT trap

なんだこれ。


こちらも参考になりました。
http://aeolus.jp/higuma/2008/10/d-16.html