我如何告诉CPAN安装所有的依赖关系?

我如何告诉CPAN安装所有的依赖关系?

我尝试在cpan设置这些:

 cpan> o conf prerequisites_policy follow cpan> o conf commit 

我仍然不得不回答“Y”几次(但比之前感觉更less)。

有没有办法让它总是前进和安装? 我想使它无人看pipe。

似乎我想要一个国旗总是相信CPAN做正确的事情,如果它提出了一个答案,我想遵循它(总是在要求什么的时候按Enter键 )。

以下是使这些更改永久的单线程包括自动首次CPANconfiguration:

 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回答默认的所有提示。

这个问题的最新和最好的答案是使用cpanm而不是(也称为App :: cpanminus或cpanminus)!

描述

cpanminus是一个脚本,可以从CPAN中获取,解压缩,构build和安装模块,而不需要做任何事情。

它是无依赖的(可以引导自己),需要零configuration,并独立。 运行时,只需要10MB的RAM。

要引导安装它:

 curl -L http://cpanmin.us | perl - --sudo App::cpanminus 

或者如果你简单地使用perlbrew

 perlbrew install-cpanm 

或从cpan本身:

 cpan install App::cpanminus 

从此,通过执行来安装模块(如果需要的话,以root身份)

 cpanm Foo::Bar 

以下是我很确定你正在寻找的东西:

 cpan> o conf prerequisites_policy follow cpan> o conf commit 

更改prerequisites_policy之上的以下参数。

 cpan> o conf prerequisites_policy 'follow' cpan> o conf build_requires_install_policy yes cpan> o conf commit 

这会将其从“询问/是”更改为“是”,并停止询问您。

也许它与ExtUtils :: AutoInstall或Module :: AutoInstall被使用有关。 尝试设置PERL_AUTOINSTALL环境variables。 (参考这些模块的文档。)

 prerequisites_policy 

在configuration中。

请参阅configurationvariables 。

就我个人而言,我只尝试了几次,以这种方式修改设置,实际上已经发现通过给cpan无参数,然后从交互式提示中configurationCPAN.pm ,可以更容易地放入CPAN.pm shell:

 $ cpan cpan> o conf init 

这将启动CPAN.pm接口configuration实用程序。 简单地通过它,并指定“跟随”你需要的地方(我忘记了这个问题),你应该很好去。

到目前为止,我发现这是安装CPAN模块最快最可靠的方法:

 yes | perl -MCPAN -e "CPAN::Shell->notest(qw!install Your::Module!)" 

我正在为可能来到此页面的人员撰写此文章,以寻找安装特定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未安装,它将安装它。