2011-07-29 2 views
1

XML에서 데이터를 가져와 데이터베이스로 내보내는 간단한 Perl 프로그램을 실행하려고합니다.CPAN이 우분투에서 모든 종류의 오류를 표시합니다.

Use Mysql; did not work, 그래서 DBD :: mysql 대신 cpan에서 Mysql.pm을 얻지 못했습니다.

그러나 아무것도 설치할 수 없습니다. xml 파서 모듈을 설치하려고하지만 설치하려고하는 모듈에 관계없이 cpan은 이러한 오류를 제공합니다.

install xml::parser 
CPAN: Storable loaded ok (v2.20) 
Going to read '/root/.cpan/sources/authors/01mailrc.txt.gz' 
CPAN: Compress::Zlib loaded ok (v2.02) 
............................................................................DONE 
Going to read '/root/.cpan/sources/modules/02packages.details.txt.gz' 
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Line-Count header. 
Please check the validity of the index file by comparing it to more 
than one CPAN mirror. I'll continue but problems seem likely to 
happen. 
CPAN: Time::HiRes loaded ok (v1.9719) 
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Last-Updated header. 
Please check the validity of the index file by comparing it to more 
than one CPAN mirror. I'll continue but problems seem likely to 
happen. 
DONE 
Going to read '/root/.cpan/sources/modules/03modlist.data.gz' 
Catching error: "Can't locate object method \"data\" via package \"CPAN::Modulelist\" (perhaps you forgot to load \"CPAN::Modulelist\"?) at (eval 29) line 1.\cJ at /usr/share/perl/5.10/CPAN/Index.pm line 518\cJ\cICPAN::Index::rd_modlist('CPAN::Index', '/root/.cpan/sources/modules/03modlist.data.gz') called at /usr/share/perl/5.10/CPAN/Index.pm line 85\cJ\cICPAN::Index::reload('CPAN::Index') called at /usr/share/perl/5.10/CPAN.pm line 955\cJ\cICPAN::exists('CPAN=HASH(0xa225610)', 'CPAN::Module', 'xml::parser') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1243\cJ\cICPAN::Shell::expandany('CPAN::Shell', 'xml::parser') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1639\cJ\cICPAN::Shell::rematein('CPAN::Shell', 'install', 'xml::parser') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1935\cJ\cICPAN::Shell::__ANON__('CPAN::Shell', 'xml::parser') called at /usr/share/perl/5.10/CPAN.pm line 375\cJ\cIeval {...} called at /usr/share/perl/5.10/CPAN.pm line 372\cJ\cICPAN::shell() called at /usr/bin/cpan line 198\cJ" at /usr/share/perl/5.10/CPAN.pm line 391 
    CPAN::shell() called at /usr/bin/cpan line 198 
Going to read '/root/.cpan/sources/authors/01mailrc.txt.gz' 
............................................................................DONE 
Going to read '/root/.cpan/sources/modules/02packages.details.txt.gz' 
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Line-Count header. 
Please check the validity of the index file by comparing it to more 
than one CPAN mirror. I'll continue but problems seem likely to 
happen. 
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Last-Updated header. 
Please check the validity of the index file by comparing it to more 
than one CPAN mirror. I'll continue but problems seem likely to 
happen. 
cpanDONE 
Going to read '/root/.cpan/sources/modules/03modlist.data.gz' 
No history written (no histfile specified). 
Lockfile removed. 
Can't locate object method "data" via package "CPAN::Modulelist" (perhaps you forgot to load "CPAN::Modulelist"?) at (eval 31) line 1. 
at /usr/share/perl/5.10/CPAN/Index.pm line 518 
    CPAN::Index::rd_modlist('CPAN::Index', '/root/.cpan/sources/modules/03modlist.data.gz') called at /usr/share/perl/5.10/CPAN/Index.pm line 85 
    CPAN::Index::reload('CPAN::Index') called at /usr/share/perl/5.10/CPAN.pm line 692 
    CPAN::all_objects('CPAN=HASH(0xa225610)', 'CPAN::Distribution') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1046 
    CPAN::Shell::failed('CPAN::Shell', 2, 1) called at /usr/share/perl/5.10/CPAN.pm line 413 
    eval {...} called at /usr/share/perl/5.10/CPAN.pm line 413 
    CPAN::shell() called at /usr/bin/cpan line 198 

내가 잘못 했나요? 나는이 오류를 찾으려고했지만 아무도 올바른 해결책을 가지고 있지 않습니다. 변경해야하는 구성에 몇 가지 설정이 있습니까?

+0

시스템 Perl에 설치하려면 sudo에서 cpan을 실행해야합니다. perlbrew Perl을 설정하고 모듈을 로컬 Perl에 설치하면이 문제는 사라집니다. – DavidO

+1

손상된 것으로 보이는'/ root/.cpan/sources/modules/02packages.details.txt.gz'을 제거하고 다시 시도하십시오. 그것도 작동하지 않는다면, 나는 아래의 Arjuna Del Toso 조언을 따를 것입니다. – salva

+2

@DavidO : 아니요. CPAN 구성에 mbuild_install_build_command 및 make_install_make_command에 sudo를 포함시켜야합니다. 하지만 그는 이미 루트로 실행중인 것 같습니다. – ysth

답변

12

아무도 내가 아마 새로운 CPAN으로 시도 할 특정 문제에 대한 해답, 같은가없는 경우 :

cd && mv .cpan .cpan-bak 

후 다시 모듈을 설치하려고합니다.

희망이 도움이됩니다.

+0

인덱스 파일을 미러링하는 것이 실패 했으므로 설명한 것처럼 새로 시작하는 것이 도움이됩니다. – daxim

+0

Yess, 효과가있었습니다. 감사합니다. – roymustang86

+0

2014 년에 이것이 도움이되었습니다! 고마워요. :) –

2

perl 사이트에 대한 연결 시간이 초과되었을 때 동일한 문제가 발생했습니다. /root/.cpan/sources/modules/02packages.details.txt.gz에는 네트워크 시간이 초과되었다는 정보 만 들어 있으며 /root/.cpan/sources/modules/03modlist.data.gz도 정크했습니다.

이러한 파일을 제거하고 네트워크 사용량이 적을 때 다시 시도하면 파일이 제대로 가져오고 모든 것이 다시 정상적으로 작동합니다.

2

"CPAN"(설치 프로그램)의 버전이 "펄"버전과 일치 확인 ...

확인이 수행하여 CPAN --version펄 -v

다른 모듈을 설치하는 동안이 동일한 오류가 발생했으며 5.8.8 perl 패키지의 일부로 컴파일 된 "cpan"버전이 있지만 "perl"버전으로 컴파일 된 것으로 밝혀졌습니다 여기 직장에서의 기본값은 버전 5.8.5이므로 cpan은 호환되지 않는 잘못된 5.8.8 perl 기본 라이브러리에 대한 참조를 사용하여 C 코드를 컴파일했습니다. hen은 5.8.5 perl 기반으로 구현되었습니다.

간단한 해결책은 전체 경로 "/usr/.../perl/5.8.5/bin/cpan module_name"을 사용하여 적절한 "cpan"프로그램을 호출하는 것이 었습니다.

기본적으로 다른 버전 패키지의 서로 다른 바이너리를 갖는이 약간의 불일치는 관리자의 감시로 인해 많은 슬픔을 불러 왔습니다.

4

나는 비슷한 문제가있었습니다. perlbrew - 5.14 :

상황 : 펄 버전을 사용

이 촉매를 설치하려고 : 플러그인 : AutoCRUD

.2

용액 :

문제는 이런 명령을 설치 CPAN에 앞에 추가 된 sudo를이었다

일부러 작업 :

sudo cpan Catalyst::Plugin::AutoCRUD 

WORKS :

chown -R myusername:myusergroup ~/.cpan 
cpan Catalyst::Plugin::AutoCRUD 

이유 : 왜냐하면 내가 perlbrew + cpan 내 사용자 계정 아래에 루트가 아닌 모든 subseq에 설치되어 있었기 때문에 uent cpan 모듈 설치는 동일한 사용자로 이루어져야합니다.