2014-04-04 3 views
3

인터넷 연결이없는 컴퓨터에 로컬 perl 설치를 설정하고 있습니다 (현재는 VM에서 PoC를 수행하고 있습니다). 나는 RPM의 REPO에서 CPANMakeMaker을 내 로컬 펄을 설치 한, 지금은이 명령을 사용하여, local::lib를 구축하기 위해 노력하고있어 :Perl - -I로 지정된 경로가 @INC에 표시되지 않습니다.

perl -I /home/serveradmin/local/usr/share/perl5 Makefile.PL --bootstrap=~/local/usr --no-manpages 

-I 경로는 CPANMakeMaker의 위치입니다.

> find /home/serveradmin/local -name CPAN.pm 
/home/serveradmin/local/usr/share/perl5/CPAN.pm 

> find /home/serveradmin/local -name MakeMaker.pm 
/home/serveradmin/local/usr/share/perl5/ExtUtils/MakeMaker.pm 

그러나, 다음의 에러와 고장 같습니다

Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: 
/home/serveradmin/local/usr/lib/perl5/5.10.0 /home/serveradmin/local/usr/lib/perl5 
/usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl 
/usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .) at inc/ConfigCPAN.pm line 15. 

Can't locate CPAN.pm in @INC (@INC contains: 
/home/serveradmin/local/usr/lib/perl5/5.10.0 /home/serveradmin/local/usr/lib/perl5 
/usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl 
/usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .). 

perl -Venv -i perl -V를 모두 생성 동일한 @INC (도 PERLLIBPERL5LIB 설정된다 실제로 env | grep -i perl에는 결과 도시 없음)

/usr/local/lib/perl5 
/usr/local/share/perl5 
/usr/lib/perl5/vendor_perl 
/usr/share/perl5/vendor_perl 
/usr/lib/perl5 
/usr/share/perl5 
. 

내가 지정한 패스는입니다. 10은 @INC 오류에 표시되지 않으므로 -I이 작동하지 않는 것으로 보입니다. 하지만 내가 실행하면

perl -I /home/serveradmin/local/usr/share/perl5 -V 

이 올바르게 @INC 앞에 경로가 추가됩니다.

내 google-fu는이 점을 밝히지 않았으므로 도움/포인터를 보내 주시면 감사하겠습니다.

감사합니다.

+1

'PERL5LIB'설정이 도움이됩니까? – toolic

+0

시스템에서 무엇을 했습니까? 이러한 모듈은 Perl과 함께 제공됩니다! – ikegami

+0

한 디렉토리에 설치된 Perl을 다른 디렉토리에 복사 한 것처럼 보입니다. 어떤 이유로 든'/ home/serveradmin/local/usr/share /'에 Perl을 올바르게 설치하지 않는가? – ikegami

답변

1

Makefile.PLperl의 다른 인스턴스를 시작하지만 -I 옵션을 다시 지정하지 않아도됩니다 (필요하지 않으므로). env var PERL5LIB을 사용하면 부모 프로세스에서 자식 프로세스로 전달되므로이 문제를 해결할 수 있습니다.

그건 그렇고, 당신이 깨진 펄 설치를 대신 제안했다. perlbrew을 사용하면 Perl을 쉽게 설치할 수 있지만, 그렇게하지 않으면 매우 간단합니다. perlbrew을 사용하지 않으려면 입력해야하는 명령에 대해서는 INSTALL을 읽고 설치 위치를 지정하는 방법을 확인하십시오. 스레드 지원을 원할 경우 -DusethreadsConfigure으로 전달하는 것을 잊지 마십시오.

+0

네, 그렇습니다. perldoc의 코어 모듈 목록에는 ExtUtils :: MakeMaker가 포함되어 있습니다. 내가 말한 것처럼 저장소의 RPM에서 설치 중이므로 소스에서 빌드하지 않기 때문에 configure를 실행하지 않을 것입니다. MakeMaker에 대해 위에 표시된 find 명령은 MakeMaker를 수동으로 설치하기 전에 아무 것도 찾지 못했기 때문에 다시, repo의 RPM에서), 나는 Perl을위한 CentOS/RHEL의 RPM이 코어 모듈로 나열되어 있다고하더라도 그것을 포함하지 않는다고 말하고 싶습니다. – PCaetano

관련 문제