Answers:
这是使这些更改永久生效的唯一方法,包括自动首次CPAN配置:
perl -MCPAN -e 'my $c = "CPAN::HandleConfig"; $c->load(doit => 1, autoconfig => 1); $c->edit(prerequisites_policy => "follow"); $c->edit(build_requires_install_policy => "yes"); $c->commit'
或将其与local::lib
非特权用户的模块结合使用:
perl -MCPAN -Mlocal::lib=~/perl5 -e 'my $c = "CPAN::HandleConfig"; $c->load(doit => 1, autoconfig => 1); $c->edit(prerequisites_policy => "follow"); $c->edit(build_requires_install_policy => "yes"); $c->commit'
在使用CPAN Shell或其他工具之前,先运行它。
尝试像这样设置PERL_MM_USE_DEFAULT:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install My::Module'
它应该使CPAN回答所有提示的默认设置。
export PERL_MM_USE_DEFAULT=1
到〜/ .bashrc
Can't locate object method "install" via package "xxx" at -e line 1.
,请在模块名称前添加“ +”。
这个问题的最新最大答案是使用cpanm
(也称为App :: cpanminus或cpanminus)!
描述
cpanminus是一个脚本,用于从CPAN获取,解压缩,构建和安装模块,并且不执行其他任何操作。
它没有依赖项(可以自行引导),需要零配置,并且独立存在。运行时,它仅需要10MB的RAM。
要引导安装它:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
或者如果您perlbrew
只是简单地使用
perlbrew install-cpanm
或从cpan本身:
cpan install App::cpanminus
从那时开始,通过执行安装模块(如果需要,以root用户身份)
cpanm Foo::Bar
cpanm
,因此告诉我使用它不是这里的解决方案。
sudo apt install cpanminus make
。
可能与使用的ExtUtils :: AutoInstall或Module :: AutoInstall有关。尝试设置PERL_AUTOINSTALL环境变量。(请参阅这些模块的文档。)
我发现,到目前为止,这是安装CPAN模块的最快,最可靠的方法:
yes | perl -MCPAN -e "CPAN::Shell->notest(qw!install Your::Module!)"
yes|/root/bin/perl -MCPAN -e "CPAN::Shell->notest(qw!install Your::Module!)"
yes
”该怎么办?
我写这篇文章是为了使那些可能已经来此页面寻求安装特定perl脚本所需的所有模块依赖关系的人的人们受益。我为此编写了一个脚本:
它应该以 ./installdep.pl yourscript.pl
#!/usr/bin/perl
`sudo apt install cpanminus`;
while (<>) {
if (/USE /i)
{
my $line=$_;
$line=~ s/\s//g;
$line=~ /^(.*)\./;
$line=~ s/\;//;
$line=~s/^USE//i;
$line=~s/lib.*//i;
$line=~s/feature.*//i;
$line=~s/strict//i;
$line=~s/warnings//i;
$line =~ s/^(.*)\(.*/$1/;
unless ($line eq '') {
my $cmd='sudo cpanm '.$line;
print "Installing $line \n";
open my $cmd_fh, "$cmd |";
while (<$cmd_fh>) {
print "$_";
}
close $cmd_fh;
print "\n";
}
}
}
这将使用cpanminus安装脚本所需的所有模块依赖项。如果未安装cpanm,它将进行安装。