読者です 読者をやめる 読者になる 読者になる

カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

WinXP+ActivePerlでCatalyst入れる方法

Development Knowledge Tips

概要: 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使って開発できるようになった。 あとはちょっとづつ勉強しよう。