2010-06-18 3 views
3

일부 Perl 모듈을 비표준 위치에 설치하려고 시도하고 있는데, /non/standard/location이라고 부르 자. 사용하려면Perl 버전 번호를 비표준 위치에있는 Perl 모듈의 "lib 사용"행에 넣는 것을 피할 수있는 방법이 있습니까?

perl Makefile.PL PREFIX=/non/standard/location 
make;make install 

을 사용하십시오. 모듈을 사용하는 스크립트에서

, 펄의 버전을 포함하여 긴 디렉토리 경로를 지정과 같이 할 필요가있을 것 같다 :
#!/usr/local/bin/perl 
use lib '/non/standard/location/lib/perl5/site_perl/5.8.9/'; 
use A::B; 

거기에 내가 사용할 수있는 use lib 또는 다른 문 Perl의 버전이 업그레이드 된 경우 되돌릴 필요가 없도록하기 위해 너무 길고 장황하지 않으며 실제 버전의 Perl을 포함하지 않습니다.

답변

0

현재 다음 처방전을 통해 설치했는데 문제가 해결되었습니다.

perl Makefile.PL --no-manpages --skipdeps PREFIX=/non/system/location INSTALLSITELIB=/non/system/location/lib INSTALLSITEBIN=/non/system/location/bin INSTALLMAN1DIR=/non/system/location/man/man1 INSTALLMAN3DIR=/non/system/location/man/man3 

나는 건설적인 비판을 환영합니다. --no-manpages을 사용하고 싶지만 INSTALLMAN1DIR은 어쨌든 필요합니다.

5

아마도 모든 질문에 답변하지는 못하지만, local::lib을 알고 계십니까? 시스템 펄에서 사용할 수있을 때, 단지 use local::lib 일 수 있습니다. 그렇지 않은 경우 :

use lib glob '~/perl5/lib/perl5'; 
use local::lib; 
아마 비트 구속의

- 그것은 윈도우에서 작동하는 방법 확실하지 -하지만 내 목적을 위해 충분합니다. 물론 스크립트가 실행되기 전에 환경을 설정할 수 있다면 (.bashrc, SetEnv 등) 올바른 경로는 이미 PERL5LIB으로 설정되어 있으므로 use lib glob을 잊어 버릴 수 있습니다.

+0

방금 ​​발견했습니다. 좋은 해결책 같아. –

+1

+1 : 당신이 lib glob을 사용할 수 있는지 몰랐습니다. 더 이상 수동으로'~'를 실제 경로로 해석하지 않아야합니다! –

관련 문제