CygwinでDBD::mysqlを使う

■先に結論から:なんか色々やってたらできた。
無難にCygwinからPerlMySQLに接続するなら、Net::MySQLを使うのがオススメ。。

CygwinCPANのDBD::mysqlをインストールすると失敗する。どうやら、MySQLのクライアントモジュールが入っていないとダメらしい。

Cygwinの場合は特殊なケースらしく、普通の方法では駄目だそうで、以下のページを参考にインストールした。

INSTALL - DBD::mysqlのインストールと構成設定の方法 【perldoc.jp】
*1 *2 *3

以下手順。

(事前準備)ライブラリのインストール

checking for termcap functions library... configure: error: No curses/termcap library found

後述のMySQLのmake中にこんな感じのエラーがこんなメッセージが出ることがある。そうならないように、あらかじめCygwinのsetup.exeとかapt-cygなんかを使って「curses」とか「termcap」みたいな名前のライブラリをインストールしておくこと。

MySQLソースコードのダウンロード

MySQLのソースをここからダウンロードする。Generic Linuxで、5.1系統のバージョンをダウンロードしたらいいと思う。5.5系統はcmakeを使うらしく、参考にしたページの方法ではインストールできなかった。

展開とかconfigureとか

どっか適当な位置に展開して、そこにcdで移動する。あとはconfigureする。これでMakeFileが用意される。結構時間がかかるので気長に待ちましょう。*4

$ ./configure --prefix=/usr/local/mysql --without-server
(これでいけるらしい。が、僕は駄目だった)

makeしてからmake installする。

そのまんま。

$ make

$ make install

次はDBD::mysql

CPANから DBD-mysql-<バージョン>.tar.gz をダウンロードし、解凍する。cdコマンドでカレントディレクトリをそこに移動する。上記の手順でMySQLソースコードからのインストールが成功していれば、 /usr/local/mysql/bin/mysql_config があるはずなので、mysql_configをカレントディレクトリにコピーする。そこで perl Makefile.PL → make → make test → make install すると、インストールできるはず。
これでCygwinperlからDBD::mysqlを使ってMySQLに接続できる。

*1:他の参考: http://bugs.mysql.com/bug.php?id=49947

*2:その他: http://d.hatena.ne.jp/end0tknr/20110405/1301992351

*3:ここも参考に: http://yaplog.jp/akihi-rolab/archive/22

*4:僕の環境だと「./configure --prefix=/usr/local/mysql --without-server --without-readline --without-libedit CFLAGS=-O2 CXXFLAGS=-O2」でいけた。ただし、「-02」はオプションとして正確に認識されてなさそうだった