Archive :: Extract Module выдает предупреждения в Perl v5.12.3 на Mac OS X Lion - PullRequest
3 голосов
/ 09 декабря 2011

Я использую стандартный дистрибутив perl (версия 5.12.3), поставляемый в комплекте с os x lion. Когда я использую модуль Archive :: Extract в скриптах с модулем -W, он выдает следующие предупреждения:

Subroutine version::declare redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 139.
Subroutine version::qv redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 140.
Subroutine version::vcmp redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 142.
Subroutine version::stringify redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 145.
Subroutine version::("" redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 146.
Subroutine version::new redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 147.
Subroutine version::parse redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 148.
Subroutine UNIVERSAL::VERSION redefined at /Library/Perl/5.12/darwin-thread-multi-2level/version.pm line 194.
Name "IPC::Cmd::I18N::en::Lexicon" used only once: possible typo at /Library/Perl/Updates/5.12.3/Locale/Maketext.p\
m line 444.
Name "Archive::Extract::I18N::en::Lexicon" used only once: possible typo at /Library/Perl/Updates/5.12.3/Locale/Ma\
ketext.pm line 444.
Name "Win32::Locale::Lexicon" used only once: possible typo at /System/Library/Perl/5.12/I18N/LangTags/Detect.pm l\
ine 140.
Name "Params::Check::I18N::en::Lexicon" used only once: possible typo at /Library/Perl/Updates/5.12.3/Locale/Maket\
ext.pm line 444.
Name "Module::Load::Conditional::I18N::en::Lexicon" used only once: possible typo at /Library/Perl/Updates/5.12.3/\
Locale/Maketext.pm line 444.

Я попытался запустить обновление в CPAN. Я даже удалил свой каталог .cpan и перенастроил свой CPAN. Я протестировал модуль, и он, кажется, работает нормально. Но почему-то меня не устраивают предупреждения.

Другая проблема, которая заставила меня опубликовать этот вопрос, заключается в том, что некоторые другие мои модули не обновляются (конечно, через CPAN). Этого никогда не случалось со мной, когда я работал под Linux.

Failed during this command:
 PMQS/BerkeleyDB-0.49.tar.gz                  : make NO
 MIKER/NetAddr-IP-4.058.tar.gz                : make_test NO
 DMR/DProf-19970614.tar.gz                    : make NO
 NWCLARK/perl-5.8.6.tar.gz                    : make NO isa perl
 JESSE/perl-5.13.9.tar.gz                     : make NO isa perl
 SHERZODR/Class-PObject-2.17.tar.gz           : make_test NO
 GBARR/IO-Tty-0.04.tar.gz                     : writemakefile NO '/usr/bin/perl Makefile.PL' returned status 65280
 DOY/Moose-2.0004.tar.gz                      : make_test NO
 RJBS/perl-5.15.2.tar.bz2                     : make NO isa perl
 FLORA/perl-5.15.4.tar.gz                     : make NO isa perl

Должен ли я попытаться очистить установку perl по умолчанию и использовать homebrew или macports для чистой установки? Есть ли что-то очевидное, что мне не хватает, что вызывает все проблемы?

Спасибо за вашу помощь.

1 Ответ

9 голосов
/ 09 декабря 2011

С perlrun ...

-W   Enables all warnings regardless of "no warnings" or $^W.

Вы получили то, что просили.

Вы не должны использовать -W в нормальном режиме. Иногда модули намеренно отключают предупреждения для определенных вещей, потому что они знают, что они делают, вызовут их.

Попробуйте -w.

Что касается вашего другого вопроса ... иногда модули CPAN не могут быть установлены. Изменение версии Perl или операционной системы может сделать это. Вам нужно будет посмотреть подробный вывод попыток установки. Или вы можете look Module::Name быть помещенным в оболочку в исходном архиве Module :: Name, где вы можете тестировать и отлаживать вручную.

Тем не менее, рекомендуется оставить операционную систему, поставляемую с Perl, одной и установить новую для разработки. Это позволяет вам вносить любые изменения, которые вы хотите, устанавливать любые модули, которые вы хотите, и любую версию Perl, которую вы хотите, не рискуя испортить вашу операционную систему или перескочить ваши обновления при следующем обновлении ОС.

perlbrew - один из лучших способов справиться с этим.

...