久々にハマった。m9(^Д^)ぷぎゃー
CentOS 5
perl-5.8.8(OS組み込み?)
httpd-2.2.6(source)/usr/local/httpd-2.2.6 へインストール
mysql-5.0.45(source)/usr/local/mysql-5.0.45 へインストール
MT4(4.01かな?)
な環境での出来事。
DBD::mysql がおそらく正常にインストールできたのに mt-check.cgi で認識されない。
ついでに、error_log みると以下のようなエラーが出やがっています。
[Tue Dec 04 15:15:41 2007] [error] [client xxx.xxx.xxx.xxx] Had to create DBD::my
sql::dr::imp_data_size unexpectedly at /usr/lib/perl5/site_perl/5.8.8/i386-linux
-thread-multi/DBI.pm line 1213.
[Tue Dec 04 15:15:41 2007] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized
value in subroutine entry at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-mu
lti/DBI.pm line 1213.
[Tue Dec 04 15:15:41 2007] [error] [client xxx.xxx.xxx.xxx] Had to create DBD::my
sql::db::imp_data_size unexpectedly at /usr/lib/perl5/site_perl/5.8.8/i386-linux
-thread-multi/DBI.pm line 1243.
[Tue Dec 04 15:15:41 2007] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized
value in subroutine entry at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-mu
lti/DBI.pm line 1243.
結局、/etc/ld.so.conf.d/mylocal.conf を以下の内容で作成したところ、認識するようになりました。
# cat mylocal.conf
/usr/local/mysql/lib/mysql
※ /usr/local/mysql -> /usr/local/mysql-5.0.45 とシンボリックリンクしています
---------------
以下、今回使った、 DBI,DBD::mysql のインストールメモ。
面倒なので調べていないのだけど、CPANが使えなかった。
anonymous でログインする前後で接続が切られてしまう?
ということで source からモジュールをインストールした。
DBI のインストール
perl-DBI は入ってるみたいだったのでいらなかったかも?
% gtar zxvf DBI-1.601.tar.gz
% cd DBI-1.601
% perl Makefile.PL
% make
% make test
% su
# make install
(`□´) 以上である!(爆)
DBD::mysql のインストール
% gtar zxvf DBD-mysql-4.005.tar.gz
% cd DBD-mysql-4.005
% export PATH=$PATH:/usr/local/mysql/bin
% perl Makefile.PL \
--cflags=-I/usr/local/mysql-5.0.45/include/mysql \
"--libs=-L/usr/local/mysql-5.0.45/lib/mysql -lmysqlclient -lz -lm -lcrypt -lnsl" \
--testuser テスト用ID \
--testdb テスト用DB \
--testpassword=テスト用パスワード
make test をきれいに終わらせるためにはテスト用の設定を一時的に mysql に作っておくと良いかも。
% make
% make test
当然、All test successful ならば
% su
# make install
DBD::mysql のインストールは特殊な環境では適切な設定を行わないとエラーで進めないので注意。
dbdimp.c:20 から include されたファイル中:
dbdimp.h:22:49: error: mysql.h: そのようなファイルやディレクトリはありません
dbdimp.h:23:45: error: mysqld_error.h: そのようなファイルやディレクトリはありません
dbdimp.h:24:49: error: errmsg.h: そのようなファイルやディレクトリはありません
とか
Can't load '/usr/local/src/CPAN/DBD-mysql-4.005/blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.15: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230.
とか。
/usr/local/mysql(/usr/local/mysql-5.0.45) に mysql をインストールしたものだから面倒なことになっていた模様。ちまたでは、yum とか rpm とか apt-get とかでやるとサックリインストールできるようだけど、その場合、 mysql が微妙に古いバージョンになってしまう模様。最新を追いたいのでソースから入れているというポリシーを守るため、がんばってしまった。。
