2015-05-21 15 views
1

我正在嘗試將一些cpan模塊臨時安裝到自定義文件夾(/ tmp/perl)中。所以我修改了構建安裝基... ...CPAN將模塊安裝到perl5而不是site_perl

o conf mbuildpl_arg "--install_base /tmp/perl" 
o conf makepl_arg "INSTALL_BASE=/tmp/perl" 

哪個工作正常,模塊現在安裝到該目錄。我也設置PERL5LIB與

PERL5LIB=/tmp/perl/lib/5.14.2/:/tmp/perl/lib/site_perl/:/opt/perl/lib/5.14.2/:/opt/perl/lib/site_perl/: 

請注意,這是所有隻是臨時的,在虛擬服務器將被銷燬。

我注意到,之前它會安裝模塊到構建路徑/ lib目錄/ 5.14.2或構建路徑/ lib目錄/ SITE_PERL

但是現在,其將模塊安裝到構建路徑/ lib目錄/ perl5的

我的理解是該核心Perl模塊以buildpath/lib/5.14.2結尾,非核心模塊以buildpath/lib/site_perl結尾。

因爲這是安裝到buildpath/lib/perl5,什麼決定安裝到perl5目錄而不是5.14.2或site_perl?

+0

只需添加一條評論,我已經發現http://search.cpan.org/~bingos/ExtUtils-MakeMaker-7.04/lib/ExtUtils/MakeMaker.pm上的信息也很有用 – Ian

回答

4

除非你重寫的ExtUtils :: MakeMaker的和Module ::通過環境變量構建(在PERL_MM_OPTPERL_MB_OPT即值)或命令行參數(例如值cpanmbuildpl_argmakepl_arg),位置硬編碼到Perl的,當它是將被使用。下面的命令將顯示(針對.pm及相關文件)的位置:

perl -V:'install(privlib|archlib|vendorlib|vendorarch|sitelib|sitearch)' 
  • installprivlib包含用Perl附帶的「純Perl的」模塊。
  • installarchlib對於具有拱形或構建依賴組件的模塊而言是相同的。
  • installvendorlib包含由您的發行版安裝的「純Perl」模塊。
  • installvendorarch對於具有拱形或構建依賴組件的模塊而言是相同的。
  • installsitelib包含由您安裝的「純Perl」模塊。
  • installsitearch對於具有拱形或構建依賴組件的模塊而言是相同的。

示例運行:

$ perl -V:'install(privlib|archlib|vendorlib|vendorarch|sitelib|sitearch)' 
installprivlib='/usr/share/perl/5.14'; 
installarchlib='/usr/lib/perl/5.14'; 
installvendorlib='/usr/share/perl5'; 
installvendorarch='/usr/lib/perl5'; 
installsitelib='/usr/local/share/perl/5.14.2'; 
installsitearch='/usr/local/lib/perl/5.14.2'; 

$ perl -V:'install(privlib|archlib|vendorlib|vendorarch|sitelib|sitearch)' 
installprivlib='/home/ikegami/usr/perlbrew/perls/5.20.1t/lib/5.20.1'; 
installarchlib='/home/ikegami/usr/perlbrew/perls/5.20.1t/lib/5.20.1/x86_64-linux-thread-multi'; 
installvendorlib=''; 
installvendorarch=''; 
installsitelib='/home/ikegami/usr/perlbrew/perls/5.20.1t/lib/site_perl/5.20.1'; 
installsitearch='/home/ikegami/usr/perlbrew/perls/5.20.1t/lib/site_perl/5.20.1/x86_64-linux-thread-multi'; 
+0

再次感謝ikegami。 – Ian

0

沒有答案貼在這裏。我也有同樣的問題。CPAN和cpanm安裝正在進入(利用X縮短路徑):

/X/lib/perl5 

但這路徑不在@INC:

perl -V 

    @INC: 
/X/lib/perl5/5.22.0/x86_64-linux-thread-multi 
/X/lib/perl5/5.22.0 
/X/lib/perl5/site_perl/5.22.0/x86_64-linux-thread-multi 
/X/lib/perl5/site_perl/5.22.0 
/X/lib/perl5/site_perl/5.22.0/x86_64-linux-thread-multi 
/X/lib/perl5/site_perl/5.22.0 
/X/lib/perl5/site_perl 
/X/lib/perl5/site_perl/5.22.0/x86_64-linux-thread-multi 
/X/lib/perl5/site_perl/5.22.0 
/X/lib/perl5/5.22.0/x86_64-linux-thread-multi 
/X/lib/perl5/5.22.0 

PERL_MM_OPT和PERL_MB_OPT具有以下值,其不出現是不正確的:

PERL_MB_OPT="--install_base /X" 
PERL_MM_OPT="INSTALL_BASE=/X" 

我有一種暢達的環境中安裝的Perl。我懷疑問題在於CPAN和CPANM對PERL_MB_OPT和PERL_MM_OPT中包含的路徑下的子目錄結構做出了不正確的假設。