как установить Perl Critical на OSX?

Пробовал скачать, распаковать, по инструкции:

  tar -zxf Perl-Critic-1.107_001.tar.gz
    cd Perl-Critic-1.107_001
    perl Makefile.PL
    make
    make test
    make install

Когда я перехожу к этапу создания, я получаю:

/usr/bin/perl "-Iblib/arch" "-Iblib/lib" t/Variables/RequireLocalizedPunctuationVars.run.PL t/Variables/RequireLocalizedPunctuationVars.run
Can't locate B/Keywords.pm in @INC (@INC contains: blib/arch blib/lib /Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.3 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12 .) at t/Variables/RequireLocalizedPunctuationVars.run.PL line 16.
BEGIN failed--compilation aborted at t/Variables/RequireLocalizedPunctuationVars.run.PL line 16.
make: *** [t/Variables/RequireLocalizedPunctuationVars.run] Error 2

Я подозреваю, что это потому, что мне не хватает зависимости. Я тоже нашел эту задачу - https://metacpan.org/pod/Task%3a%3aPerl%3a%3aCritic, который кажется интересным, но в нем нет указаний, как работать.

--- РЕДАКТИРОВАТЬ После запуска - sudo cpan Task :: Perl :: Critic

Я получаю такие результаты:

Test Summary Report
-------------------
t/20_policies.t (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/pod.t         (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
Files=5, Tests=5,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.08 cusr  0.01 csys =  0.12 CPU)
Result: FAIL
Failed 2/5 test programs. 0/5 subtests failed.
make: *** [test_dynamic] Error 255
  MARCELO/Perl-Critic-Itch-0.07.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports MARCELO/Perl-Critic-Itch-0.07.tar.gz
Running make install
  make test had returned bad status, won't install without force
Running Build for T/TH/THALJEF/Task-Perl-Critic-1.008.tar.gz
  Has already been unwrapped into directory /Users/joelnylund/.cpan/build/Task-Perl-Critic-1.008-g5bmDk

  CPAN.pm: Going to build T/TH/THALJEF/Task-Perl-Critic-1.008.tar.gz

Warning: Prerequisite 'Perl::Critic::PetPeeves::JTRAMMELL => 0.01' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'JTRAMMELL/Perl-Critic-PetPeeves-JTRAMMELL-0.03.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::Dynamic => 0.05' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'THALJEF/Perl-Critic-Dynamic-0.05.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Test::Perl::Critic::Progressive => 0.03' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'THALJEF/Test-Perl-Critic-Progressive-0.03.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::Compatibility => 1.000' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'ELLIOTJS/Perl-Critic-Compatibility-1.001.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::Swift => 1.000003' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'ELLIOTJS/Perl-Critic-Swift-v1.0.3.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::Lax => 0.007' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'RJBS/Perl-Critic-Lax-0.009.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::Bangs => 1.00' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'PETDANCE/Perl-Critic-Bangs-1.10.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::More => 1.000' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'ELLIOTJS/Perl-Critic-More-1.000.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::Tics => 0.005' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'RJBS/Perl-Critic-Tics-0.007.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic => 1.117' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'THALJEF/Perl-Critic-1.118.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::Pulp => 3' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'KRYDE/Perl-Critic-Pulp-80.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::Storable => 0' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'MATTD/Perl-Critic-Storable-0.01.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Test::Perl::Critic => 1.02' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'THALJEF/Test-Perl-Critic-1.02.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'criticism => 1.02' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'THALJEF/criticism/criticism-1.02.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::StricterSubs => 0.03' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'THALJEF/strictersubs/Perl-Critic-StricterSubs-0.03.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::Nits => 1.000000' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'KCOWGILL/Perl-Critic-Nits-v1.0.0.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Warning: Prerequisite 'Perl::Critic::Itch => 0' for 'THALJEF/Task-Perl-Critic-1.008.tar.gz' failed when processing 'MARCELO/Perl-Critic-Itch-0.07.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited.
Building Task-Perl-Critic
  THALJEF/Task-Perl-Critic-1.008.tar.gz
  ./Build -- OK
Running Build test
t/00_load.t .......... 1/1 # Testing Task::Perl::Critic 1.008
t/00_load.t .......... ok   
t/98_pod_syntax.t .... ok   
t/99_pod_coverage.t .. skipped: Test::Pod::Coverage 1.00 requried to test POD
All tests successful.
Files=3, Tests=2,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.07 cusr  0.02 csys =  0.12 CPU)
Result: PASS
  THALJEF/Task-Perl-Critic-1.008.tar.gz
Tests succeeded but 18 dependencies missing (Perl::Critic::Storable,Perl::Critic::PetPeeves::JTRAMMELL,Perl::Critic::Dynamic,Test::Perl::Critic::Progressive,Test::Perl::Critic,Perl::Critic::Compatibility,Perl::Critic::Swift,Perl::Critic::Moose,Perl::Critic::Lax,criticism,Perl::Critic::Bangs,Perl::Critic::More,Perl::Critic::StricterSubs,Perl::Critic::Tics,Perl::Critic::Nits,Perl::Critic,Perl::Critic::Pulp,Perl::Critic::Itch)
  THALJEF/Task-Perl-Critic-1.008.tar.gz
  [dependencies] -- NA
Running Build install
  make test had returned bad status, won't install without force

person Joelio    schedule 23.09.2013    source источник
comment
Используйте программу командной строки cpan для автоматической установки, которая также устанавливает зависимости: sudo cpan Task::Perl::Critic   -  person amon    schedule 23.09.2013
comment
Вы не пробовали использовать оболочку CPAN? perl -MCPAN -e shell; за которым следует install Perl::Critic. Он будет обрабатывать зависимости за вас.   -  person devnull    schedule 23.09.2013
comment
Пытался (sudo cpan Task :: Perl :: Criti), что теперь он выполнил много работы, но закончился следующим: Запуск сборки install make test вернул плохой статус, не будет устанавливаться без силы   -  person Joelio    schedule 23.09.2013
comment
Тогда попробуйте использовать --force :-)   -  person user1126070    schedule 23.09.2013
comment
Не установить без применения силы означает, что тест не прошел. Принуждать к этому, не понимая, почему тест не проходит, контрпродуктивно, потому что вы не знаете, что программа установки будет работать. Нам нужно будет увидеть ошибки тестов, чтобы продолжать помогать вам решать эту проблему.   -  person Andy Lester    schedule 23.09.2013
comment
@ user1126070: Установка вслепую - ужасный совет. Вы не знаете, в каком состоянии находится сборка. OP мог устанавливать сломанный код и не знать об этом.   -  person Andy Lester    schedule 23.09.2013
comment
Почему вы пытаетесь установить Perl :: Critic трехлетней давности, а почему не последнюю версию 1.118?   -  person Slaven Rezic    schedule 23.09.2013
comment
@Slaven - Я установил последнюю версию с веб-сайта -Perl-Critic-1.118 - я предполагаю, что файл readme для установки только что продан   -  person Joelio    schedule 28.09.2013


Ответы (2)


Вероятно, вы не захотите устанавливать Task::Perl::Critic. Он включает в себя множество плагинов с дополнительными политиками, написанными другими авторами. Некоторые из них будут конфликтовать друг с другом (т. Е. Соблюдение одного означает нарушение другого). И согласно сообщениям об ошибках, которые вы показали выше, именно эти плагины являются источником ошибок тестирования, а не Perl::Critic.

Достаточно установить только Perl::Critic. Как предлагали другие, используйте утилиту cpan:

sudo cpan Perl::Critic

Это позаботится обо всех зависимостях за вас.

person Jeffrey Ryan Thalhammer    schedule 18.10.2013
comment
Я бы cpanm Perl::Critic::Command - person Pablo Bianchi; 15.01.2020

Что ж, похоже, ужасный совет был единственным, который сработал, судя по комментариям, которые я сделал:

 cpan
 force install Task::Perl::Critic

И, похоже, до сих пор это работает ... Я просмотрел около дюжины файлов perl, и результаты, похоже, совпадают с тем, что я искал ...

person Joelio    schedule 03.10.2013
comment
Это работает, за исключением той части, где вы его принудительно установили, даже если у вас не установлены зависимости. Как вы думаете, все будет волшебным образом работать без установленных зависимостей? Причина, по которой существуют тесты, заключается в том, что у вас есть основания полагать, что код будет работать. Вы игнорируете это, и когда вы столкнетесь с ошибками в будущем, у вас будет эта сила установить виноват. - person Andy Lester; 03.10.2013
comment
Привет, Энди, ты не предложил никакого решения, это заставляет инструмент работать, и я согласен, что где-то есть бомба замедленного действия, но у меня нет другой альтернативы, чтобы попробовать. Я обновил билеты с выводом install. - person Joelio; 04.10.2013
comment
Решение состоит в том, чтобы попытаться установить Task :: Perl :: Critic, и когда это не удастся, показать нам сообщение об ошибке из части, которая не работает, чтобы мы могли помочь вам диагностировать его. Вы не показывали нам никаких сообщений об ошибках. При этой установке будет установлено много модулей, и один из них вышел из строя, но вы не показали нам, какой из них вышел из строя, или какое сообщение об ошибке вы получили при сбое. - person Andy Lester; 04.10.2013
comment
весь вывод установки находится в пункте выше - person Joelio; 04.10.2013