Mac OS X 10.5 - MAMP+DBD::mysql

MAMPなクライアント環境でweb開発のテスト中です。
ApachePHPmySQLは、さくさく動いています。


ところが、サーバで動いていたCGI(perl) が動きません。

use DBI;


ここが原因。

この後、試行錯誤をいろいろとして、勉強になりました。
最終的に理解したことと手順をまとめると…

    • DBIとは、perlのモジュールで、DBインタフェースとして必要。
    • DBにmySQLを使うなら、ドライバとしてDBD::mysqlも必要。
    • MAMPに、perlは、含まれていない。*1
    • MAMPな環境では、perlは、OSにくっついてきたのを使っている。
    • つまり、OSにくっついてきたperlに、モジュール(DBI, DBD::mysql)を追加する必要あり。
    • DBIは、cpanコマンド(perlのモジュール管理ツール)でインストール。
    • DBD::mysqlcpanコマンドでインストール出来れば苦労はないが、MAMPに合わせたコンパイルの引数を指定するためには、makeしなければならない。
    • makeのためには、DBD::mysqlmySQLのソースが必要となる。
    • perlに、mySQLの場所を教えてあげる必要がある。


これが理解出来てないと、検対処療法に追われる感じになるんだよね。
解決策っぽいのを見つけても、環境が違ったりして…。


一番便利だったのは、MAMPフォーラム 「DBI, DBD-mysql will work」


MAMPに特化しているだけあって、一番スマートな方法じゃあないでしょうか。
DBIのインストールの次から、私なりに訳すと次のような感じ。

DBDの構築

1. mysql_configを探す。(私の場合は /Applications/MAMP/Library/bin/ にある)

2. MAMPと同じバージョンのMySQLをダウンロードして、解凍する。
 (訳注.mySQLのサイトからでもよし、MAMPのサイトでソース版をダウンロードしてもよし)

3. includeディレクトリを /Applications/MAMP/Library/ディレクトリの下に移動する。

4. libディレクトリの内容を /Applications/MAMP/Library/lib/mysql/ディレクトリにコピーする。

5. make file を作る: sudo Perl Makefile.PL --mysql_config=/Applications/MAMP/Library/bin/mysql_config
 (訳注.mysql_configを指定することによって、この環境用のコンパイル引数を調べて設定してくれる)

6. sudo make

7. sudo make install*2


追加設定*3

DBI と DBD-mysqlMySQLライブラリの場所を教える。

1. /usr/localにmysqlディレクトリ作成: sudo mkdir /usr/local/mysql
 (訳注.すでに/usr/local/mysql(他のmysqlへのリンク)があったので、あらかじめ削除しました)

2. シンボリックリンクを作る:
 sudo ln -s /Applications/MAMP/Library/lib/mysql lib
 sudo ln -s /Applications/MAMP/Library/include include

3. perlからMySQLのソケットを見つけるために、/tmpにシンボリックリンクを作成する:
 sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

ダウンロードしたmySQLは、削除しちゃってもOK。
(/Applications/MAMP/Library/includeも、/Applications/MAMP/Library/lib/mysql/にコピーしたファイルも削除しちゃっていいんでしょうが、また必要になるかもしれないので、残してあります。)


MAMPとは、まだ付き合っていくことになりそう。
ここまでくると、簡単インストールとは言えないけどね。

*1:ここで、xampに鞍替えという道もあります。好みの問題かな。

*2:make testでは、エラーが出ました。でも、次の追加設定をしてちゃんと動いたので無視していいのかな…?

*3:「追加」というか必須です。