CentOS5 で最新の DBD::mysql を導入する
あけましておめでとうございます。またしてもブログがおざなりになってしまいました… orz
直接お金になる仕事ではないのですが、ここしばらく、某所の BBS を開発するため、 Perl をいじっております。正直、 .NET や JavaScript 、ケータイアプリの開発なんてことばかりやっておりますと、たまにいじる Perl が楽しくて楽しくて、ついついこっちばかりやってしまう、という日々がしばらく続いております。いかんですな。
で、こちらの開発がとりあえずキリの良いところまで進んだので、一旦お蔵入りにしようと思うのですが (といっても年単位で寝かせるわけではないですが)、その前にこれに関連する技術的なメモをしたためておこうかと思うのであります。
作っているのは、さくらの共有レンタルサーバーサービス上で動作する CGI なのですが、レンタルサーバの性質上、 CPAN から最新のモジュールを引っ張ってくることが出来るので、割とモダンチックなスタイルで開発できるのが強みだったりします。
ただ、レンタルサーバ上で動作確認する場合、 500 エラーになってもエラーログをすぐには参照できないので (さくらにメールで問い合わせすることは可能らしいですが…)、弊社サーバー上にも設置し、動作確認するようにしました。
弊社サーバーはさくらの VPS を利用しており、 CentOS5 で動いています。基本的にはソフトウェアの導入は yum から行っているのですが、その場合、 DBD::mysql を始めとした多くの CPAN モジュールが、かなり古いバージョンで導入されることになります。特に、 DBD::mysql は 3.0007 と極めて古く、Unicode を扱うのに必要不可欠な接続時オプション mysql_enable_utf8 が使えないといった弊害がありました。他にも、 DateTime がタイムゾーンを理解できないなど、いろいろと弊害があったため、 CPAN から最新版をインストールしようかと試みたのですが、そのままではほとんどのモジュールについてコンパイルが通らないなど、cpan コマンドからではインストールが出来ませんでした。
CPAN 自体を最新版に
まず、cpan コマンドとして動作する Bundle::CPAN モジュール自体が古いので、それを最新にしてしまいましょう。
$ sudo cpan -i Bundle::CPAN
さらに、導入済みのモジュールを最新版に一括して更新してしまいましょう。こちらは cpan コマンドからではうまくいかなかったので、 perl から。
$ sudo perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'
DBD::mysql のインストールには MySQL 自体のソースが必要
ここまでやっても、DBD::mysql のインストールはやっぱり失敗していて、古いバージョンのままです。
$ perl -MDBD::mysql -e 'print "$DBD::mysql::VERSION\n"' 3.0007 $
結論から言うと、DBD::mysql を make する際に、MySQL 自体のヘッダファイルを参照しており、単に yum から MySQL だけを入れた状態ではこのヘッダファイルが導入されていないために、コンパイルに失敗してしまいます。そこで、 MySQL の開発用リソースを導入するパッケージ mysql-devel を事前に入れておく必要があります。
$ sudo yum install mysql-devel $ sudo cpan -i DBD::mysql
これで、最新の DBD::mysql のインストールが成功するはずです。
2011 年 1 月 11 日 by 村山 俊之
2011 年 1 月 11 日 1:42 PM
[...] This post was mentioned on Twitter by わかめにゅーす(SQL). わかめにゅーす(SQL) said: はらぺこ日誌» ブログアーカイブ » CentOS5 で最新の DBD::mysql を導入する http://bit.ly/gYVNxo [...]