2010-10-05 3 views
2

У меня возникла проблема (связанная с Катализатором), по-видимому, с Moose/Class :: MOP. Начиная с моего сервера, я получаю следующий результат ... (показано ниже во всей красе)Почему я получаю много предупреждений Муха, когда я запускаю Catalyst?

Псевдоним и исключает варианты ролевых приложений были переименованы -алиасы и -excludes в/usr/local/lib/perl/5.10.1/Moose/Meta/Role/Application.pm line 26 Moose :: Meta :: Role :: Application :: new ('Moose :: Meta :: Role :: Application :: ToRole', 'исключает', '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/местные/Библиотека/Perl/5 .10.1/Moose/Util.pm line 87 Moose :: Util :: apply_all_roles ('Moose :: Meta :: 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 строке 29 Лось :: Роль :: с ('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 Класс :: MOP :: __ ANON __() вызывается в /usr/share/perl5/Try/Tiny.pm строке 71 eval {...} вызван по адресу /usr/share/perl5/Try/Tiny.pm line 67 Попробуйте: : Tiny :: try ('CODE (0x93c2910)', 'Try :: Tiny :: Catch = REF (0x93bba38)'), вызываемый в/usr/local/lib /perl/5.10.1/Class/MOP.pm строка 12 Класс :: MOP :: load_first_existing_class ('Catalyst :: ScriptRole'), вызываемый в /usr/local/lib/perl/5.10.1/Class/MOP.pm line 136 Класс :: 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 line 87 Лось: : Util :: apply_all_roles ('Moose :: Meta :: Class = HASH (0x8fc9378)', 'Catalyst :: ScriptRole'), вызываемый по адресу /usr/local/lib/perl/5.10.1/Moose.pm line 58 Moose :: с ('Moose :: Meta :: Class = HASH (0x8fc9378)', 'Catalyst :: ScriptRole'), вызываемый по адресу /usr/local/lib/perl/5.10.1/Moose/Exporter.pm line 29 Moose :: с («Catalyst :: ScriptRole»), вызываемым в /usr/share/perl5/Catalyst/Script/Server.pm li ne 1 требуется Catalyst/Script/Server.pm, вызываемый по адресу /usr/local/lib/perl/5.10.1/Class/MOP.pm, строка 113 Класс :: MOP :: __ ANON __(), вызываемый в/usr/share/perl5/Try/Tiny.pm строка 71 eval {...} вызов на /usr/share/perl5/Try/Tiny.pm строка 67 Попробуйте :: Tiny :: try ('CODE (0x8f6dc38)', 'Попробуйте :: Tiny :: Catch = REF (0x8f8d1c8) '), вызываемый в /usr/local/lib/perl/5.10.1/Class/MOP.pm строке 12 Класс :: MOP :: load_first_existing_class (' Catalyst :: Script: : Server '), вызываемый в /usr/local/lib/perl/5.10.1/Class/MOP.pm строке 136 Класс :: MOP :: load_class (' Catalyst :: Script :: Server '), вызываемый в/usr/share/perl5/Catalyst/ScriptRunner.pm line 18 Catalyst :: ScriptRunner :: run ('Catalyst :: ScriptRunner', 'Ямайка', 'Сервер'), вызываемый в строке script/boca_server.pl 8 Старый Муз :: Util :: MetaRole AP I (до версии 0.94) устарел на странице /usr/local/lib/perl/5.10.1/Moose/Util/MetaRole.pm line 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 line 355 Moose :: Exporter :: __ ANON __ ('MooseX :: MethodAttributes'), вызываемый в/usr/share/perl5/Catalyst/Controller.pm line 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 Катализатор :: BEGIN(), вызываемый по адресу /usr/share/perl5/Catalyst/Controller.pm, строка 10 eval {. ..}, вызываемые по адресу /usr/share/perl5/Catalyst/Controller.pm, строка 10 требуют, чтобы Catalyst.pm вызывался по адресу /home/bobek/dev/build_7.2/mvc/Jamaica/script/../lib/Jamaica. pm line 17 Ямайка :: BEGIN() вызван в /usr/share/perl5/Catalyst/Controller.pm line 10 eval {...} вызван в /usr/share/perl5/Catalyst/Controller.pm, строка 10 требуют, чтобы Ямайка.pm вызывалась в /usr/local/lib/perl/5.10.1/Class/MOP.p m line 113 Класс :: MOP :: __ ANON __() вызывается в /usr/share/perl5/Try/Tiny.pm строке 71 eval {...} вызван в /usr/share/perl5/Try/Tiny.pm line 67 Попробуйте :: Tiny :: try ('CODE (0x8fb3230)', 'Try :: Tiny :: Catch = REF (0x969fee0)'), вызываемый в /usr/local/lib/perl/5.10.1/Class/ MOP.pm line 12 Класс :: MOP :: load_first_existing_class ('Ямайка'), вызываемый по адресу /usr/local/lib/perl/5.10.1/Class/MOP.pm, строка 136 Класс :: MOP :: load_class (' Ямайка ') вызывается в /usr/share/perl5/Catalyst/ScriptRole.pm строке 61 Катализатор :: ScriptRole :: _ run_application (' Catalyst :: Script :: Server = HASH (0x969d748) '), вызываемый в/usr/share/perl5/Catalyst/Script/Server.pm line 181 Catalyst :: Script :: Server :: run ('Catalyst :: Script :: Server = HASH (0x969d748)'), вызываемый в /usr/local/lib/perl/5.10 .1/Class/MOP/Method/Wrapped.pm line 48 Class :: MOP :: Method :: Wrapped :: __ ANON __ ('Catalyst :: Script :: Server = HASH (0x969d748)'), вызываемый в /usr/local/lib/perl/5.10.1/Class/MOP/Method /Wrapped.pm line 89 Catalyst :: Script :: Server :: run ('Catalyst :: Script :: Server = HASH (0x969d748)'), вызываемый по адресу /usr/share/perl5/Catalyst/ScriptRunner.pm line 20 Catalyst :: ScriptRunner :: run («Catalyst :: ScriptRunner», «Ямайка», «Сервер»), вызываемый по адресу script/boca_server.pl, строка 8

Я новичок в Catalyst (и мне это нравится, я просто хочу успешно его запустить и запустить). Я проверил последние версии Moose и Class :: MOP, и они обновлены (что касается CPAN).

Надеюсь, кто-то, кто знаком с Музом, видел это раньше. Любые предложения или место для начала проверки будут оценены по достоинству.

Michelle B.

+0

Можете ли вы разместить соответствующие части 'boca_server.pl'? –

+0

Спасибо Эрик. строка восемь .... Catalyst :: ScriptRunner-> run ('Boca', 'Server'); Катализатор создает это автоматически. :-) –

+0

Как вы устанавливаете Moose и Catalyst? Во время установки должно быть предупреждение о несовместимости версий. – Ether

ответ

10

Вы используете старую версию Catalyst. Эта проблема была исправлена ​​в фиксации r13516 и уже доступна в CPAN начиная с версии 5.80026 (5.80028 является последней и рекомендуется).

В Catalyst использовалась устаревшая функция Moose, которая только недавно начала предупреждать.

+0

СПАСИБО! Мне просто нужно было обновить Catalyst. Я знаю, что это было довольно очевидно, и я благодарю вас. (а также Эрик и Эфир) –

+0

вы бы заглянули в мой новый ответ. В текущем материале есть некоторые проблемы с зависимостью от версии, и большинство из них, похоже, имеет ваше имя в релизах. Спасибо! – Ashley

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 :: Общие для вашей конфигурации, это хорошая идея тоже:

cpanm -v Config::General 

Если вы их запустите, и он не запустится, просто прочитайте трассировку стека (назад), ища имена или отсутствующие функции/методы.Все, что вы видите как проблему, обновите. Это «стабильный» комплект, но это набор движущихся целей, и все должно выстраиваться в линию.

+0

Существует проблема с некоторыми из упомянутых вами модулей, а не с другими. Это вызвано изменениями в Package :: Stash. Когда вы обновили пакет :: Stash, его Makefile.PL предупредил вас об этом и рассказал вам, какой модуль вам нужно обновить. Также он установил программу 'pack-stash-conflict' для проверки того, какие модули вам нужно обновить, если вы пропустили уведомление Makefile.PL. – rafl

+0

@rafl, спасибо за информацию (и тяжелая работа, я действительно ценю!). Я не думаю, что средний пользовательский прыжок через этот вид обруча - это правильный путь. Я могу это сделать, но большинство не будет/не может. Показатель FAIL для тестов Cat на 5.80030 составляет> 12% прямо сейчас, а 5.80029 составляет <1%. – Ashley

+0

Если у вас есть альтернативные решения о том, как работать с отсутствием поддержки конфликтов в инструментальной цепочке CPAN, сообщите нам. – rafl

Смежные вопросы