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

Nif*_*fle 113 perl dependencies cpan

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

我试过设置这些cpan:

cpan> o conf prerequisites_policy follow
cpan> o conf commit
Run Code Online (Sandbox Code Playgroud)

我仍然不得不回答"y"几次(但感觉比之前少).

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

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

kbo*_*sak 81

尝试设置PERL_MM_USE_DEFAULT,如下所示:

PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install My::Module'
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您使用的是Linux,请在〜/ .bashrc中添加`export PERL_MM_USE_DEFAULT = 1`这一行 (3认同)

Joe*_*ger 54

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

描述

cpanminus是一个从CPAN获取,解压缩,构建和安装模块的脚本,不做任何其他事情.

它是无依赖性的(可以自我引导),需要零配置,并且是独立的.运行时,它只需要10MB的RAM.

要引导安装它:

curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Run Code Online (Sandbox Code Playgroud)

或者,如果你使用的是perlbrew简单

perlbrew install-cpanm
Run Code Online (Sandbox Code Playgroud)

或来自cpan本身:

cpan install App::cpanminus
Run Code Online (Sandbox Code Playgroud)

从那时起通过执行安装模块(如果需要,以root身份)

cpanm Foo::Bar
Run Code Online (Sandbox Code Playgroud)

  • 我在使用 `cpanm` 时遇到了这个问题,所以告诉我使用它不是这里的解决方案。 (2认同)
  • 而不是盲目评论,请在这里提出一个新问题并链接.我怀疑权限问题可能是你的问题 (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'
Run Code Online (Sandbox Code Playgroud)

或者将其与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'
Run Code Online (Sandbox Code Playgroud)

在使用CPAN shell之前运行它.


Mar*_*k C 28

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

cpan> o conf prerequisites_policy follow
cpan> o conf commit
Run Code Online (Sandbox Code Playgroud)


小智 27

下面是在prerequisites_policy之上更改以下参数.

cpan> o conf prerequisites_policy 'follow'
cpan> o conf build_requires_install_policy yes
cpan> o conf commit
Run Code Online (Sandbox Code Playgroud)

这会将它从"ask/yes"改为"yes"并停止询问你.


Sin*_*nür 6

prerequisites_policy
Run Code Online (Sandbox Code Playgroud)

在配置中.

请参阅配置变量.

  • 提示是否与下载模块源有关?如果是这样,请参阅**connect_to_internet_ok**选项.否则,请告诉我们您要避免的其他提示. (2认同)

tse*_*see 6

也许它与ExtUtils :: AutoInstallModule :: AutoInstall有关.尝试设置PERL_AUTOINSTALL环境变量.(参见那些模块的文档.)