MTOS 5.01 の mt-check.cgi でチェックすると、インストールされているはずの Crypt::DSA がインストールされていないとなってしまう
MTOS 5.01 のインストール時に、
mt-check.cgi へアクセスすると、
オプションモジュールの1つである Crypt::DSA について、
サーバーに Crypt::DSAか、Crypt::DSAの動作に必要な他のモジュールがインストールされていません。
と表示され、インストールされていないことになってしまう。
コマンドラインで確認すると、
$ perl -MCrypt::DSA -e 'print Crypt::DSA->VERSION, "\n"' 1.16
とのように、インストールされている。
おかしいな〜ということで、
mt-check.cgi の中を見ると、23行目で、ライブラリパスに mt ディレクトリの extlib を追加しており、
これが優先的に参照されるようになっている
unshift @INC, File::Spec->catdir($dir, 'extlib');
Crypt::DSA は、Math::BigInt に依存しており、
cpan でインストールした Math::BigInt 1.89 ではなく、
mt の extlib ディレクトリにある古いバージョンの Math::BigInt 1.63 の方をロードしてしまっていたため、
NG となってしまう。
2006年5月8日リリースの Crypt::DSA 0.14 が依存している
Math::BigInt のバージョンは1.60であり、
MTOS の extlib に含まれている Math::BigInt 1.63でも問題ない。
一方、2009年9月11日にリリースされた Crypt::DSA 1.16 では、
Math::BigInt 1.78 以上に依存している。
Crypt::DSA 1.16を CPAN でインストールしていた場合、
これにひっかかってしまい、mt-check.cgi で「インストールされていない」ことになってしまう。
これを回避するには、extlib の Math::BigInt モジュールを取り除いてやればよい。
MTOS パッケージの extlib に新しいバージョンの Math::BigInt が入っていればいいんだけれど、そうすると何か別の問題が起こってしまったりするのかなぁ。