Encode::Detect 入らない

前も書きましたけど Encode::Detect がうまく入らないのです。

% perl Makefile.PL
% make
rm -f blib/arch/auto/Encode/Detect/Detect.so
gcc  -shared -L/usr/local/lib Detect.o  -o blib/arch/auto/Encode/Detect/Detect.so       \
        \
  
gcc: Detect.o: No such file or directory
gcc: no input files
make: *** [blib/arch/auto/Encode/Detect/Detect.so] Error 1

実際には CPANPLUS 使ってるんですが上記と同じエラーが出ます。

ところが今日別のマシンで CPANPLUS を使ったらなぜかインストールできました。きちんとログをとってなかったんで違いはわかりませんが,ディストリビューションをインストールできる方法がわかりました。

ExtUtils::MakeMaker (Makefile.PL) ではなく,Makefile.PL は付属してませんでした)Module::Build (Build.PL) を使うといけます。

% perl Build.PL
% ./Build
... blah ...
% ./Build test
... blah ...
% sudo perl Build install

でいけました。前述の環境だとなんでいけたのか謎。

追記 2006/10/10

CPANPLUS最新にすれば自動でインストールログ取ってくれるよ!

ナルホド!

と思ってインストール成功したログ(~/.cpanplus/install-logs/モジュール名-タイムスタンプ)をみてみましたが,成功ログなのでイマイチわからない。

で,失敗したマシンのログをみてみたら…

[ERROR] [Fri Oct 6 17:05:28 2006] This module requires 'Module::Build' and 'CPANPLUS::Dist::Build' to be installed, but you don't have it! Will fall back to 'CPANPLUS::Dist::MM', but might not be able to install!
[MSG] [Fri Oct 6 17:05:29 2006] No 'Makefile.PL' found - attempting to generate one

ああぁ… Makefile.PL は CPANPLUS が勝手に作ってくれたものだったのですね。カコワルス。

ということで,インストールできていなかった理由は,Module::Build あるいは CPANPLUS::Dist::Build が入っていなかったからでした。

これまで cpan install CPANPLUS して満足していたんですが,これからはきちんと Bundle::CPANPLUS::Dependencies をインストールすることにします。

追記 2006/10/10-2

Module::Build の C Support が disabled だとうまくいかないので,u Module::Build -> i ExtUtils::CBuilder, おまけで i ExtUtils::ParseXS -> i Module::Build って手順で入れ直す必要アリ。