簡體   English   中英

CPAN將模塊安裝到perl5而不是site_perl

[英]CPAN installing modules into perl5 instead of site_perl

我正在嘗試將一些cpan模塊臨時安裝到自定義文件夾(/ tmp / 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/:

注意,這只是暫時的,在虛擬服務器上將被銷毀。

我注意到,之前它會將模塊安裝到buildpath / lib / 5.14.2或buildpath / lib / site_perl中

但是現在,它將模塊安裝到buildpath / lib / perl5中

我的理解是核心perl模塊最終在buildpath / lib / 5.14.2中,而非核心模塊最終在buildpath / lib / site_perl中。

由於這是安裝到buildpath / lib / perl5,什么決定安裝到perl5目錄而不是5.14.2或site_perl?

除非您通過環境變量(即PERL_MM_OPTPERL_MB_OPT值)或命令行參數(例如cpanmbuildpl_argmakepl_arg值)覆蓋ExtUtils :: MakeMaker和Module :: Build,否則將使用在構建時硬編碼到Perl中的位置。 以下命令將顯示這些位置(對於.pm和關聯文件):

perl -V:'install(privlib|archlib|vendorlib|vendorarch|sitelib|sitearch)'
  • installprivlib包含Perl附帶的“純Perl”模塊。
  • installarchlib與具有arch或build依賴組件的模塊相同。
  • installvendorlib包含發行版安裝的“純Perl”模塊。
  • installvendorarch對於具有arch或build依賴組件的模塊是相同的。
  • installsitelib包含您installsitelib的“純Perl”模塊。
  • 對於具有與arch或build依賴的組件的模塊, 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';

>perl -V:"install(privlib|archlib|vendorlib|vendorarch|sitelib|sitearch)"
installprivlib='C:\progs\sp5280-x64\perl\lib';
installarchlib='C:\progs\sp5280-x64\perl\lib';
installvendorlib='C:\progs\sp5280-x64\perl\vendor\lib';
installvendorarch='C:\progs\sp5280-x64\perl\vendor\lib';
installsitelib='C:\progs\sp5280-x64\perl\site\lib';
installsitearch='C:\progs\sp5280-x64\perl\site\lib';

這里沒有答案。 我也有同樣的問題。 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"

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM