6

在我使用cpanm在“新”(对我而言)系统上安装一些 Perl 模块之前,我想知道默认情况下它们将安装在哪里。

我没有看到任何类型的试运行选项,这是我所希望的。

perl -V包括此 %ENV 和 @INC 信息:

%ENV:
  PERL5LIB="/home/randall/perl5/lib/perl5"
  PERL_HOMEDIR="1"
  PERL_LOCAL_LIB_ROOT="/home/randall/perl5"
  PERL_MB_OPT="--install_base /home/randall/perl5"
  PERL_MM_OPT="INSTALL_BASE=/home/randall/perl5"
@INC:
  /home/randall/perl5/lib/perl5
  /usr/local/lib64/perl5
  /usr/local/share/perl5
  /usr/lib64/perl5/vendor_perl
  /usr/share/perl5/vendor_perl
  /usr/lib64/perl5
  /usr/share/perl5

这是否定义了行为,还是有其他考虑因素?具体来说,cpanm 的文档包括:

-l, --local-lib
    Sets the local::lib compatible path to install modules to. You don't
    need to set this if you already configure the shell environment
    variables using local::lib, but this can be used to override that as
    well.

但它并没有指出哪些环境变量是重要的。

4

1 回答 1

3

这可能会有所帮助:https://metacpan.org/pod/App::cpanminus#Where-does-this-install-modules-to?-Do-I-need-root-access?

这会将模块安装到哪里?我需要root权限吗?

它安装到 ExtUtils::MakeMaker 和 Module::Build 配置到的任何位置(通过PERL_MM_OPTPERL_MB_OPT)。

默认情况下,它安装到属于您的 perl 的 site_perl 目录。您可以通过运行来查看它的位置,如果您使用的是系统 perl,或者如果您使用 perlbrew 或 pleenv 自己构建了 perl perl -V,它可能会在您的主目录下。/opt/local/perl/...

如果你已经在你的 shell 上配置了 local::lib,cpanm 认为设置和模块将被安装到你的本地 perl5 目录中。

在启动时,cpanminus 会检查您是否已经配置了 local::lib,或者是否有权将模块安装到 site_perl 目录。如果两者都没有,即您使用的是系统 perl 并且没有以 root 身份运行 cpanm,它会自动perl5在您的主目录下的目录中设置 local::lib 兼容的安装路径。

于 2017-01-27T22:45:19.473 回答