如何告诉CPAN安装所有依赖项?
我尝试在cpan
中设置这些:
cpan> o conf prerequisites_policy follow
cpan> o conf commit
我仍然不得不回答“y”几次(但感觉比之前少)。
有没有办法让它始终继续安装?我想让它无人看管。
似乎我想要一个旗帜总是信任CPAN做正确的事情,如果它建议一个答案我想跟随它(当它问什么时总是点击 Enter )。
答案 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)
答案 6 :(得分:6)
可能与使用ExtUtils::AutoInstall或Module::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,它将安装它。