如何告诉CPAN安装所有依赖项?

时间:2009-05-22 16:36:37

标签: perl dependencies cpan

如何告诉CPAN安装所有依赖项?

我尝试在cpan中设置这些:

cpan> o conf prerequisites_policy follow
cpan> o conf commit

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

有没有办法让它始终继续安装?我想让它无人看管。

似乎我想要一个旗帜总是信任CPAN做正确的事情,如果它建议一个答案我想跟随它(当它问什么时总是点击 Enter )。

10 个答案:

答案 0 :(得分:81)

尝试设置PERL_MM_USE_DEFAULT,如下所示:

PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install My::Module'

它应该使CPAN回答所有提示的默认值。

答案 1 :(得分:52)

这个问题的最新和最好的答案是使用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

答案 2 :(得分:29)

以下是使这些更改永久化的单线程,包括自动首次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之前运行它。

答案 3 :(得分:28)

以下是我非常确定您正在寻找的内容:

cpan> o conf prerequisites_policy follow
cpan> o conf commit

答案 4 :(得分:27)

在prerequisites_policy之上更改以下参数。

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

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

答案 5 :(得分:6)

设置

prerequisites_policy

在配置中。

请参阅Config Variables

答案 6 :(得分:6)

可能与使用ExtUtils::AutoInstallModule::AutoInstall有关。尝试设置PERL_AUTOINSTALL环境变量。 (参见那些模块的文档。)

答案 7 :(得分:3)

就我个人而言,我只尝试了几次以这种方式修改设置,并且实际上发现通过赋予CPAN.pm无参数更容易放入cpan shell,然后配置{{1来自交互式提示:

CPAN.pm

这将启动$ cpan cpan> o conf init 接口配置实用程序。只需浏览它并在你需要的地方指定“跟随”(我忘记了问题),你应该好好去。

答案 8 :(得分:3)

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

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

答案 9 :(得分:1)

我写这篇文章的目的是为了帮助那些可能来到此页面寻找安装特定perl脚本所需的所有模块依赖项的方法的人。我写了一个脚本:

应该以{{1​​}}

运行
./installdep.pl yourscript.pl

这将使用cpanminus来安装脚本所需的所有模块依赖项。如果没有安装cpanm,它将安装它。