在使用多个Perl模块时,使用CPAN将其安装到特定目录

在使用多个Perl模块时,使用CPAN将其安装到特定目录,perl,cpan,Perl,Cpan,运行以下命令将返回多个路径: perl -e 'print join("\n",@INC,"")' 每个路径中都安装了模块。我希望以root用户身份将模块安装到以下目录中: /usr/local/share/perl5 o conf makepl_arg 'PREFIX=/usr/local/share/perl5 INSTALLMAN3DIR=/usr/local/share/perl5/man/man3' o conf mbuild_arg '--install_base /usr/lo

运行以下命令将返回多个路径:

perl -e 'print join("\n",@INC,"")'
每个路径中都安装了模块。我希望以root用户身份将模块安装到以下目录中:

/usr/local/share/perl5
o conf makepl_arg 'PREFIX=/usr/local/share/perl5 INSTALLMAN3DIR=/usr/local/share/perl5/man/man3'
o conf mbuild_arg '--install_base /usr/local/share/perl5'
o conf mbuild_install_arg '--install_base /usr/local/share/perl5'
o conf mbuildpl_arg '--install-base /usr/local/share/perl5'
[o conf commit]

我将运行哪些命令来查找cpan(作为root用户)当前安装模块的位置?如果不是上面显示的路径,我将如何更改它?

以下是我如何配置
cpan
以将所有新模块放在特定目录中:

/usr/local/share/perl5
o conf makepl_arg 'PREFIX=/usr/local/share/perl5 INSTALLMAN3DIR=/usr/local/share/perl5/man/man3'
o conf mbuild_arg '--install_base /usr/local/share/perl5'
o conf mbuild_install_arg '--install_base /usr/local/share/perl5'
o conf mbuildpl_arg '--install-base /usr/local/share/perl5'
[o conf commit]

第一行是针对使用
ExtUtils::MakeMaker
的模块的,接下来的三行是针对使用
Module::Build

的模块的,您也可以通过


如何发出这些命令以查看它们当前指向的位置?
o conf
(all)或
o conf{name}
将显示当前值,该值可能为空。使用
perl-V:'.*inst.'
作为将由default@ikegamisitelib='/usr/local/share/perl5';installsitelib='/usr/local/share/perl5';makepl_arg[INSTALLDIRS=site]mbuildpl_arg[--INSTALLDIRS site]这是指向/usr/local/share/perl5的吗?上面的内容并没有像我预期的那样有效。我注意到,当我从CPAN安装一个模块时,它正在/usr/local/share/perl/5.30.3中安装它。但我担心,当Perl通过apt更新时,这个模块会落后。所以我想,也许我应该在更持久的地方安装模块,例如/usr/share/perl5。因此,我将前缀和install_base更改为上面的前缀。但是当我安装Mail::DMARC时,它安装在/usr/share/perl5/lib/perl5/Mail/DMARC中!要在/usr/share/perl5中安装这些vars,我需要设置什么?我可能只需要使用(或者至少检查它是如何实现的)。