2010-08-17 2 views
0

필자는 우분투 컴퓨터에 perl 5.10.1을 설치했습니다. Moose 및 MooseX 익스텐트를 설치하기를 원했기 때문에 aptitude 패키지 관리자로 패키지를 설치했습니다. 여기에 내가 설치 한 모든 패키지는 다음과 같습니다 나는 MooseX :: * 확장명을 사용하는 코드를 실행할 때자동 모드에서 perl MooseX 확장 기능을 사용 하시겠습니까?

$ sudo apt-cache pkgnames | grep moose 
libmoosex-singleton-perl 
libmoosex-compiletime-traits-perl 
libmoosex-types-structured-perl 
libmoosex-traits-pluggable-perl 
libmoosex-nonmoose-perl 
libmoosex-methodattributes-perl 
libmoosex-strictconstructor-perl 
libmoosex-classattribute-perl 
libany-moose-perl 
libmoosex-traits-perl 
libmoosex-meta-typeconstraint-forcecoercion-perl 
libmoosex-attributehelpers-perl 
libmoosex-types-set-object-perl 
libmoosex-multiinitarg-perl 
libmoosex-has-sugar-perl 
libmoosex-role-withoverloading-perl 
libmoosex-getopt-perl 
libmoosex-aliases-perl 
libmoosex-types-varianttable-perl 
libmoosex-types-datetime-perl 
libmoosex-yaml-perl 
libmoosex-daemonize-perl 
libmoosex-blessed-reconstruct-perl 
libmoosex-emulate-class-accessor-fast-perl 
libmoosex-poe-perl 
libmoose-perl 
libmoosex-types-common-perl 
libmoosex-async-perl 
libmoosex-method-signatures-perl 
libmoosex-storage-perl 
libmoosex-log-log4perl-perl 
libmoose-policy-perl 
libmoosex-semiaffordanceaccessor-perl 
libmoose-autobox-perl 
libmoosex-app-cmd-perl 
libmoosex-role-parameterized-perl 
libmoosex-params-validate-perl 
libmoosex-object-pluggable-perl 
libmoosex-declare-perl 
libmoosex-lazyrequire-perl 
libmoosex-methodattributes 
libmoosex-clone-perl 
libmoosex-types-perl 
libmoosex-types-path-class-perl 

내 질문은, 왜 횡설수설을받을 수 있나요입니까? 무음 모드를 활성화하는 방법이 있습니까? 여기에 단지 무스 출력하지만, 원하는 결과에 아무것도 표시되지 않습니다 사용하지만 것은 내가 MooseX :: 선언을 사용하는 경우 내가 무엇을 얻을 수 있습니다 :

$ ./myPerlProg.pl 
The old Moose::Util::MetaRole API (before version 0.94) has been deprecated at /usr/local/lib/perl/5.10.1/Moose/Util/MetaRole.pm line 16 
Moose::Util::MetaRole::apply_metaclass_roles('for_class', 'MooseX::Method::Signatures', 'attribute_metaclass_roles', 'ARRAY(0x9ec2988)') called at /usr/share/perl5/MooseX/LazyRequire.pm line 15 
MooseX::LazyRequire::init_meta('MooseX::LazyRequire', 'for_class', 'MooseX::Method::Signatures', 'metaclass', undef) called at /usr/local/lib/perl/5.10.1/Moose/Exporter.pm line 355 
Moose::Exporter::__ANON__('MooseX::LazyRequire') called at /usr/share/perl5/MooseX/Method/Signatures.pm line 10 
MooseX::Method::Signatures::BEGIN() called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
eval {...} called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
require MooseX/Method/Signatures.pm called at /usr/share/perl5/MooseX/Declare/Syntax/MethodDeclaration.pm line 5 
MooseX::Declare::Syntax::MethodDeclaration::BEGIN() called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
eval {...} called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
require MooseX/Declare/Syntax/MethodDeclaration.pm called at /usr/local/lib/perl/5.10.1/Class/MOP.pm line 114 
Class::MOP::__ANON__() called at /usr/local/share/perl/5.10.1/Try/Tiny.pm line 71 
eval {...} called at /usr/local/share/perl/5.10.1/Try/Tiny.pm line 67 
Try::Tiny::try('CODE(0x9acde78)', 'Try::Tiny::Catch=REF(0x9a966a8)') called at /usr/local/lib/perl/5.10.1/Class/MOP.pm line 125 
Class::MOP::load_first_existing_class('MooseX::Declare::Syntax::MethodDeclaration') called at /usr/local/lib/perl/5.10.1/Class/MOP.pm line 137 
Class::MOP::load_class('MooseX::Declare::Syntax::MethodDeclaration', undef) called at /usr/local/lib/perl/5.10.1/Moose/Util.pm line 109 
Moose::Util::_apply_all_roles('Moose::Meta::Class=HASH(0x9ac6200)', undef, 'MooseX::Declare::Syntax::MethodDeclaration') called at /usr/local/lib/perl/5.10.1/Moose/Util.pm line 87 
Moose::Util::apply_all_roles('Moose::Meta::Class=HASH(0x9ac6200)', 'MooseX::Declare::Syntax::MethodDeclaration') called at /usr/local/lib/perl/5.10.1/Moose.pm line 58 
Moose::with('Moose::Meta::Class=HASH(0x9ac6200)', 'MooseX::Declare::Syntax::MethodDeclaration') called at /usr/local/lib/perl/5.10.1/Moose/Exporter.pm line 294 
Moose::with('MooseX::Declare::Syntax::MethodDeclaration') called at /usr/share/perl5/MooseX/Declare/Syntax/Keyword/MethodModifier.pm line 9 
require MooseX/Declare/Syntax/Keyword/MethodModifier.pm called at (eval 205) line 1 
MooseX::Declare::Syntax::MooseSetup::BEGIN() called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
eval {...} called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
eval 'package MooseX::Declare::Syntax::MooseSetup; use MooseX::Declare::Syntax::Keyword::MethodModifier;' called at /usr/share/perl5/aliased.pm line 50 
aliased::_load_alias('MooseX::Declare::Syntax::Keyword::MethodModifier', 'MooseX::Declare::Syntax::MooseSetup') called at /usr/share/perl5/aliased.pm line 20 
aliased::import('aliased', 'MooseX::Declare::Syntax::Keyword::MethodModifier') called at /usr/share/perl5/MooseX/Declare/Syntax/MooseSetup.pm line 8 
MooseX::Declare::Syntax::MooseSetup::BEGIN() called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
eval {...} called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
require MooseX/Declare/Syntax/MooseSetup.pm called at /usr/local/lib/perl/5.10.1/Class/MOP.pm line 114 
Class::MOP::__ANON__() called at /usr/local/share/perl/5.10.1/Try/Tiny.pm line 71 
eval {...} called at /usr/local/share/perl/5.10.1/Try/Tiny.pm line 67 
Try::Tiny::try('CODE(0x9ab31c8)', 'Try::Tiny::Catch=REF(0x9a8e398)') called at /usr/local/lib/perl/5.10.1/Class/MOP.pm line 125 
Class::MOP::load_first_existing_class('MooseX::Declare::Syntax::MooseSetup') called at /usr/local/lib/perl/5.10.1/Class/MOP.pm line 137 
Class::MOP::load_class('MooseX::Declare::Syntax::MooseSetup', undef) called at /usr/local/lib/perl/5.10.1/Moose/Util.pm line 109 
Moose::Util::_apply_all_roles('Moose::Meta::Class=HASH(0x9a054b8)', undef, 'MooseX::Declare::Syntax::MooseSetup', 'MooseX::Declare::Syntax::RoleApplication', 'MooseX::Declare::Syntax::Extending') called at /usr/local/lib/perl/5.10.1/Moose/Util.pm line 87 
Moose::Util::apply_all_roles('Moose::Meta::Class=HASH(0x9a054b8)', 'MooseX::Declare::Syntax::MooseSetup', 'MooseX::Declare::Syntax::RoleApplication', 'MooseX::Declare::Syntax::Extending') called at /usr/local/lib/perl/5.10.1/Moose.pm line 58 
Moose::with('Moose::Meta::Class=HASH(0x9a054b8)', 'MooseX::Declare::Syntax::MooseSetup', 'MooseX::Declare::Syntax::RoleApplication', 'MooseX::Declare::Syntax::Extending') called at /usr/local/lib/perl/5.10.1/Moose/Exporter.pm line 294 
Moose::with('MooseX::Declare::Syntax::MooseSetup', 'MooseX::Declare::Syntax::RoleApplication', 'MooseX::Declare::Syntax::Extending') called at /usr/share/perl5/MooseX/Declare/Syntax/Keyword/Class.pm line 7 
require MooseX/Declare/Syntax/Keyword/Class.pm called at (eval 1) line 1 
MooseX::Declare::BEGIN() called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
eval {...} called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
eval 'package MooseX::Declare; use MooseX::Declare::Syntax::Keyword::Class;' called at /usr/share/perl5/aliased.pm line 50 
aliased::_load_alias('MooseX::Declare::Syntax::Keyword::Class', 'MooseX::Declare') called at /usr/share/perl5/aliased.pm line 20 
aliased::import('aliased', 'MooseX::Declare::Syntax::Keyword::Class', 'ClassKeyword') called at /usr/share/perl5/MooseX/Declare.pm line 6 
MooseX::Declare::BEGIN() called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
eval {...} called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
require MooseX/Declare.pm called at ./myPerlProg10.pl line 3 
main::BEGIN() called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
eval {...} called at /usr/share/perl5/MooseX/LazyRequire.pm line 10 
Variable "$class" is not imported at ./myPerlProg10.pl line 12. 

답변

4

이가 (무스 1.09에서 소개) 중단 경고이다. 사용중인 확장 (또는 코드 자체)은 향후 Moose의 일부 버전에서 제거 될 기능을 사용하고 있습니다. 경고를 일으키는 MooseX 확장 프로그램 인 경우 업데이트 된 버전을 찾으십시오. 그것이 귀하의 코드라면, 고쳐주십시오.

예를 들어, MooseX::LazyRequire 0.06을 설치하여 첫 번째 경고 (이전 Moose :: Util :: MetaRole API를 사용하는 MooseX/LazyRequire.pm)를 수정해야합니다.

mirod의 답변에 CPAN의 Moose를 설치했지만 aptitude의 MooseX 모듈에 대한 귀하의 의견을 참조하십시오. 그게 당신의 문제를 일으켰습니다. Moose의 버전이 확장 프로그램에 너무 새로 추가되었습니다. CPAN 또는 aptitude의 모든 것을 설치하십시오. Moose와 MooseX :: *와 같은 밀접한 관련 모듈에 CPAN과 aptitude 설치를 함께 사용하면 문제가 발생할 수 있습니다.

+0

우수 ... moose와 mooseX와 관련된 패키지를 모두 제거했습니다. 그러나 패키지 관리자 (perl, perl-base 및 perl-modules)를 통해 perl을 설치했으며 버전은 5.10.1-8ubuntu2입니다. CPAN 셸에서 Moose 및 MooseX를 설치하면 문제가 발생합니까? –

+0

@Kaeso, 나는 그것이 문제가되어야한다고 생각하지 않는다. – cjm

+2

또한 "MooseX :: * extensions"는 절대로 선별되지 않습니다. 그들은 무스 (Moose)에 의한 사용 중단에 대한 최신 정보 일 수도 있고 아닐 수도 있습니다. 무스 코어 팀은 우리가 이미 취한 조치 (릴리스 전에 모든 다운 스트림 모듈의 변경 사항을 테스트하고 그러한 변경 사항이 많은 커뮤니티에 알리는 등)을 넘어서이를 시행 할 방법이 없거나 원하는 것은 아닙니다. – perigrin

관련 문제