2

我显然遇到了 Moose/Class::MOP 的问题(与催化剂相关)。启动我的服务器,我得到以下输出......(如下所示)

角色应用程序的别名和排除选项已重命名为 -alias 和 -excludes,位于 /usr/local/lib/perl/5.10.1/Moose/Meta/Role/Application.pm 第 26 行 Moose::Meta::Role:: Application::new('Moose::Meta::Role::Application::ToRole', 'excludes', 'ARRAY(0x9645568)') 在 /usr/local/lib/perl/5.10.1/Moose/Meta 调用/Role.pm 第 416 行 Moose::Meta::Role::apply('Moose::Meta::Role=HASH(0x95b3368)', 'Moose::Meta::Role=HASH(0x9446d90)', '排除' , 'ARRAY(0x9645568)') 在 /usr/local/lib/perl/5.10.1/Moose/Util.pm 第 133 行调用 Moose::Util::_apply_all_roles('Moose::Meta::Role=HASH(0x9446d90) )', undef, 'MooseX::Getopt', 'HASH(0x9454a08)') 在 /usr/local/lib/perl/5.10.1/Moose/Util.pm 第 87 行调用 Moose::Util::apply_all_roles('驼鹿::元::Role=HASH(0x9446d90)', 'MooseX::Getopt', 'HASH(0x9454a08)') 在 /usr/local/lib/perl/5.10.1/Moose/Role.pm 第 26 行调用 Moose::Role:: with('Moose::Meta::Role=HASH(0x9446d90)', 'MooseX::Getopt', 'HASH(0x9454a08)') 在 /usr/local/lib/perl/5.10.1/Moose/Exporter 调用。 pm 第 294 行 Moose::Role::with('MooseX::Getopt', 'HASH(0x9454a08)') 调用于 /usr/share/perl5/Catalyst/ScriptRole.pm 第 8 行需要 Catalyst/ScriptRole.pm 调用于 / usr/local/lib/perl/5.10.1/Class/MOP.pm 第 113 行 Class::MOP::__ANON__() 在 /usr/share/perl5/Try/Tiny.pm 第 71 行调用 eval {...}在 /usr/share/perl5/Try/Tiny.pm 第 67 行调用 Try::Tiny::try('CODE(0x93c2910)', 'Try::Tiny::Catch=REF(0x93bba38)') 在 /usr 调用/local/lib/perl/5.10.1/Class/MOP.pm 第 124 行 Class::MOP::load_first_existing_class('Catalyst::ScriptRole') 调用于 /usr/local/lib/perl/5.10.1/Class/MOP.pm 第 136 行 Class::MOP::load_class('Catalyst::ScriptRole', undef) 调用于/usr/local/lib/perl/5.10.1/Moose/Util.pm 第 109 行 Moose::Util::_apply_all_roles('Moose::Meta::Class=HASH(0x8fc9378)', undef, 'Catalyst::ScriptRole ') 在 /usr/local/lib/perl/5.10.1/Moose/Util.pm 第 87 行调用 Moose::Util::apply_all_roles('Moose::Meta::Class=HASH(0x8fc9378)', '催化剂: :ScriptRole') 在 /usr/local/lib/perl/5.10.1/Moose.pm 第 58 行调用 Moose::with('Moose::Meta::Class=HASH(0x8fc9378)', 'Catalyst::ScriptRole' ) 在 /usr/local/lib/perl/5.10.1/Moose/Exporter.pm 第 294 行调用 Moose::with('Catalyst::ScriptRole') 在 /usr/share/perl5/Catalyst/Script/Server 调用。pm 第 14 行需要在 /usr/local/lib/perl/5.10.1/Class/MOP.pm 调用 Catalyst/Script/Server.pm 第 113 行 Class::MOP::__ANON__() 在 /usr/share/perl5 调用/Try/Tiny.pm 第 71 行 eval {...} 在 /usr/share/perl5/Try/Tiny.pm 第 67 行调用 Try::Tiny::try('CODE(0x8f6dc38)', 'Try::Tiny ::Catch=REF(0x8f8d1c8)') 在 /usr/local/lib/perl/5.10.1/Class/MOP.pm 第 124 行调用 Class::MOP::load_first_existing_class('Catalyst::Script::Server')在 /usr/local/lib/perl/5.10.1/Class/MOP.pm 第 136 行调用 Class::MOP::load_class('Catalyst::Script::Server') 在 /usr/share/perl5/Catalyst 调用/ScriptRunner.pm 第 18 行 Catalyst::ScriptRunner::run('Catalyst::ScriptRunner', 'Jamaica', 'Server') 在 script/boca_server.pl 第 8 行调用旧的 Moose::Util::MetaRole API(之前版本 0。94) 已在 /usr/local/lib/perl/5.10.1/Moose/Util/MetaRole.pm 第 16 行被弃用 Moose::Util::MetaRole::apply_metaclass_roles('for_class', 'Catalyst::Controller', 'metaclass_roles', 'ARRAY(0x97bdff8)', 'method_metaclass_roles', 'ARRAY(0x97ab9f0)', 'wrapped_method_metaclass_roles', 'ARRAY(0x981d650)') 在 /usr/share/perl5/MooseX/MethodAttributes.pm 第 32 行调用 MooseX ::MethodAttributes::init_meta('MooseX::MethodAttributes', 'for_class', 'Catalyst::Controller', 'metaclass', undef) 在 /usr/local/lib/perl/5.10.1/Moose/Exporter 调用。 pm 第 355 行 Moose::Exporter::__ANON__('MooseX::MethodAttributes') 调用于 /usr/share/perl5/Catalyst/Controller.pm 第 10 行 Catalyst::Controller::BEGIN() 在 /usr/share/perl5/Catalyst/Controller.pm 第 10 行调用 eval {...} 在 /usr/share/perl5/Catalyst/Controller.pm 第 10 行调用需要 Catalyst/Controller.pm 在 / usr/share/perl5/Catalyst.pm 第 16 行 Catalyst::BEGIN() 调用于 /usr/share/perl5/Catalyst/Controller.pm 第 10 行 eval {...} 调用于 /usr/share/perl5/Catalyst/ Controller.pm 第 10 行需要在 /home/bobek/dev/build_7.2/mvc/Jamaica/script/../lib/Jamaica.pm 调用 Catalyst.pm 第 17 行 Jamaica::BEGIN() 在 /usr/share 调用/perl5/Catalyst/Controller.pm 第 10 行 eval {...} 在 /usr/share/perl5/Catalyst/Controller.pm 第 10 行调用需要 Jamaica.pm 在 /usr/local/lib/perl/5.10.1 调用/Class/MOP.pm 第 113 行 Class::MOP::__ANON__() 在 /usr/share/perl5/Try/Tiny.pm 第 71 行调用 eval {...} 在 /usr/share/perl5/Try/ 调用Tiny.pm 第 67 行尝试::Tiny::try('CODE(0x8fb3230)', 'Try::Tiny::Catch=REF(0x969fee0)') 在 /usr/local/lib/perl/5.10.1/Class/MOP.pm 第 124 行调用::MOP::load_first_existing_class('Jamaica') 在 /usr/local/lib/perl/5.10.1/Class/MOP.pm 第 136 行调用 Class::MOP::load_class('Jamaica') 在 /usr/ 调用share/perl5/Catalyst/ScriptRole.pm 第 61 行 Catalyst::ScriptRole::_run_application('Catalyst::Script::Server=HASH(0x969d748)') 在 /usr/share/perl5/Catalyst/Script/Server.pm 调用第 181 行 Catalyst::Script::Server::run('Catalyst::Script::Server=HASH(0x969d748)') 在 /usr/local/lib/perl/5.10.1/Class/MOP/Method/Wrapped 处调用.pm 第 48 行 Class::MOP::Method::Wrapped::__ANON__('Catalyst::Script::Server=HASH(0x969d748)') 在 /usr/local/lib/perl/5.10.1/Class/ 调用MOP/方法/Wrapped.pm 第 89 行催化剂::Script::Server::run('Catalyst::Script::Server=HASH(0x969d748)') 在 /usr/share/perl5/Catalyst/ScriptRunner.pm 第 20 行调用 Catalyst::ScriptRunner::run('Catalyst: :ScriptRunner', 'Jamaica', 'Server') 在 script/boca_server.pl 第 8 行调用

我是 Catalyst 的新手(我确实喜欢它,我只是想成功启动并运行它)。我检查了 Moose 和 Class::MOP 的最新版本,它们是最新的(就 CPAN 而言)。

希望熟悉 Moose 的人以前见过这个。任何建议或开始检查的地方将不胜感激。

米歇尔 B。

4

2 回答 2

10

您正在运行旧版本的 Catalyst。此问题已在提交r13516中得到修复,并且从版本 5.80026 开始已在 CPAN 上可用(5.80028 是最新的和推荐的)。

Catalyst 正在使用 Moose 的一些已弃用的功能,该功能最近才开始发出警告。

于 2010-10-05T20:38:49.267 回答
1

所以,你是对的,当前的 Cat 东西有一个相当破碎的依赖链。您可以从当前 CPAN 上的通过/失败中看到,失败的 5.80030 远高于正常情况。

根据您当前模块/版本的状态,有几个颠簸。今天早上这对我有用(我不确定这是否矫枉过正)-

cpanm -v namespace::clean
cpanm -v namespace::autoclean
cpanm -v B::Hooks::EndOfScope
cpanm -v Package::Stash
cpanm -v Class::MOP Moose MooseX::Types
cpanm -v MooseX::Role::WithOverloading::Meta::Role::Application

cpanm -v Catalyst Catalyst::Devel

如果您使用 Config::General 进行配置,这也是一个好主意:

cpanm -v Config::General

如果您将它们放入并且它不会启动,只需阅读堆栈跟踪(向后)以查找名称或缺少的函数/方法。任何你认为有问题的东西,升级。这是一个“稳定”套件,但它是移动目标的集合,所有东西都必须排队。

于 2011-01-20T20:19:40.297 回答