cpanm 安装 Perl 模块的默认路径是什么?

Ran*_*all 5 default perl-module cpanm

在我使用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
Run Code Online (Sandbox Code Playgroud)

这是否定义了行为,还是有其他考虑?具体来说,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.
Run Code Online (Sandbox Code Playgroud)

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

pol*_*tix 8

这可能会有所帮助: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 -V,如果您使用的是系统 perl,那么它可能位于/opt/local/perl/...您的主目录下,或者如果您使用 perlbrew 或 pleenv 自己构建了 perl,则可能位于您的主目录下。

如果您已经在 shell 上配置了 local::lib,cpanm 会考虑将设置和模块安装到您的本地 perl5 目录。

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