Mac OS X 10.5 - MAMP+DBD::mysql
MAMPなクライアント環境でweb開発のテスト中です。
Apache+PHP+mySQLは、さくさく動いています。
ところが、サーバで動いていた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::mysqlもcpanコマンドでインストール出来れば苦労はないが、MAMPに合わせたコンパイルの引数を指定するためには、makeしなければならない。
- makeのためには、DBD::mysqlとmySQLのソースが必要となる。
- 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-mysql にMySQLライブラリの場所を教える。
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 include3. 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とは、まだ付き合っていくことになりそう。
ここまでくると、簡単インストールとは言えないけどね。