なぜ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 ~]$
今回入れたCatalystはMooseが採用されている最新の5.8系でした。
[webmaster@localhost ~]$ perl -MCatalyst -le 'print $Catalyst::VERSION' 5.80001 [webmaster@localhost ~]$
*1:2年くらい前なので、なぜそうしたかはもう覚えてないのですが