カラクリスタ

WinXP+ActivePerlでCatalyst入れる方法

概要: WindowsXP で Catalyst 使いたい!と言うことで挑戦してみた。


Windows で Catalyst を使うために CPAN でのインストールを挑戦してみた。 最初結構無謀かと思ったけど、なんとかなってしまったので色々とメモる。

最初に前提として CPAN でモジュールがインストール出来るようにしておくこと。

で、まず cpan でinstall Catalystするなりして Catalyst に必要な Perl モジュールを入れる。 cpan でエラーが出て入らなかった場合、PPM でインストールすると良いかも。

で、必要なモジュールが入れ終わって、Catalyst のテストを実行するとき nmake が

NMAKE :  U1095:

と言う感じのエラーを出す。

調べてみたところこれは nmake への引数が、OS の制限より長いことが原因らしい。 で、これを回避するために Catalyst の Makefile をちょっと改造する。

Makefile は cpan でinstall Catalystした時に Catalyst の ファイルが展開されたディレクトリ(cpan/build 以下)にある。

で、Makefile のTEST_FILESという設定を見つける。

この項目に Catalyst のすべてのテストが指定されているんだけど、 これが OS の制限を超えるほど長いので、

TEST_FILES = t/*.t

と言う感じにして、短くする。

これでテストは問題なくなるので cpan に戻ってinstall Catalystをする。

自分の環境の場合、c3_mro.t というテスト以外はすべて通った。

で、c3_mro.t が Win32.pm が@INC から見つからないというエラーが出てたんだけど、 その@INC に ActivePerl の CPAN モジュールがインストールされたディレクトリが何故か含まれてなかった。

試しに PPM で Win32 モジュール入れてみたものの、 相変わらずモジュールが見つからないとか言ってきたので、 試しに Catalyst が展開されたディレクトリにもぐって、

prove -I lib t/c3_mro.t

と言う感じで単体でテストしたらちゃんと通ったので、テストが要求している動作はしていると判断、 force install Catalystして強制的にインストールした。

これで Catalyst 本体は入ったので、他の開発用コマンドとか、 Catalyst のプラグインとかそういったものを入れるためにinstall Task::Catalystする。 ちなみにこれは結構時間がかかった。

で、いくつかモジュールのインストールに失敗する->Catalyst のプラグイン入らないと言うことがあったので、 PPM でこけたモジュールをインストール->cpan に戻ってinstall Task::Catalystと言うことを繰り返した。

ちなみにこのときどうも Catalyst::Plugin::Session が循環依存しているみたいでうまく入らなかった。 正確には Catalyst::Plugin::Session が

  • Catalyst::Plugin::Session::State::Cookie
  • Catalyst::Plugin::Session::State::URI

を要求していて、上記二つも Catalyst::Plugin::Session を必要としているとかそんな感じ。

仕方がないので、展開された Catalyst::Plugin::Session のディレクトリにもぐって、 Makefile.PL の上記二つのモジュールを要求する部分をコメントアウト、 んで、

perl Makefile.PL
nmake test
nmake install

して入れた。その後上記二つのモジュールをインストールした。

まあ、こんな感じでようやく Catalyst のモジュールを入れ終わった。はっきりいってマゾい。 実のところ PPM に Catalyst はあったりするんだけど、実際にはバージョンがちょっと古かったりする。

で、ここまでやって、PPM でinstall Task::Catalystして必要なモジュールをインストール、 そのあと PPM でインストールした Catalyst をアンインストールして、 CPAN 経由で Catalyst の最新版入れればよかったなーとも思ったりするのが遅かった。

ちなみにこのエントリ作業しながら書いてて、実際作業し終わるのに 2 日かかりました。 要するにこのエントリ書き始めて二日目です。

とりあえずこれで Windows で Catalyst 使って開発できるようになった。 あとはちょっとづつ勉強しよう。

#FIXME