なぜController::Rootにuse Catalystしていたか不明

新しい自宅サーバで以前Catalystで作ったアプリを動作させる為の環境を作っていて、一通り、useするのに必要なCPANモジュールをインストールしました。

何も考えずどんどん最新を入れていったのが間違いで、全然入らない。いくつかforce installしました。

install LWP
install Task::Catalyst
install Catalyst::Plugin::Session::Store::FastMmap
install DBI
install DBD::SQLite
install Class::DBI
force install DBIx::Class
force install Catalyst::Model::DBIC::Schema
force install Catalyst::Plugin::Authentication::Store::DBIC
install Catalyst::Plugin::UploadProgress
install Catalyst::Plugin::Cache::FastMmap
force install Catalyst::Model::DBIC::Schema
force install Catalyst::View::Email
install XMLRPC::Lite
install XMLRPC::Lite::UpdatePing

私のような自宅での趣味ならともかく、業務的に運用するとなるとこんな事をやっていては毎日がトラブル続きで、話にならないですね。。今回はもういいとしても、今後はバージョン固定で管理します。

モジュールのコンプリートまでこぎつけたものの、mod_perlで起動すると以下のエラーが発生。

Starting httpd: [Wed Apr 22 02:03:34 2009] [error] Couldn't instantiate component "MyApp::Controller::Root", "Inconsistent hierarchy during C3 merge of class 'MyApp::Controller::Root':\n\tcurrent merge results [\n\t\tMyApp::Controller::Root,\n\t]\n\tmerging failed on 'Catalyst::Controller' at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/Class/C3/XS.pm line 53, <DATA> line 855." at (eval 2) line 3\nCompilation failed in require at (eval 2) line 3, <DATA> line 855.\n
[Wed Apr 22 02:03:34 2009] [error] Can't load Perl module MyApp for server localhost.localdomain:0, exiting...

MyApp::Controller::Rootの中を見てみると、なぜかCatalystをuseしていて*1該当箇所をコメントアウトすると正常に起動しました。

use Catalyst qw/
    Static::Simple
    ConfigLoader
    /;

上記で動作していたCatalystは以下のバージョンです。

[webmaster@localhost ~]$  perl -MCatalyst -le 'print $Catalyst::VERSION'
5.7014
[webmaster@localhost ~]$

今回入れたCatalystMooseが採用されている最新の5.8系でした。

[webmaster@localhost ~]$ perl -MCatalyst -le 'print $Catalyst::VERSION'
5.80001
[webmaster@localhost ~]$

*1:2年くらい前なので、なぜそうしたかはもう覚えてないのですが