以非交互方式为给定选项安装Perl模块并假设为yes

时间:2013-08-27 06:11:09

标签: perl cpan

通常在linux Debian中我们这样做是非交互式安装包,例如

sudo apt-get install -y Package_x_z

#[-y --assume-yes]

我们如何在安装perl模块时也这样做,例如

sudo perl -MCPAN -e 'install DBI'

4 个答案:

答案 0 :(得分:19)

该提示(通常)来自ExtUtils :: MakeMaker的prompt()函数。将export PERL_MM_USE_DEFAULT=1粘贴到.bashrc(或首选shell的等效文件)中以停止提示。 ExUtils :: MakeMaker手册页因此记录了它:

  

PERL_MM_USE_DEFAULT

     

如果设置为true值,则MakeMaker的提示功能将始终返回默认值      无需等待用户输入。

请注意,如果您在尚未配置CPAN存储库的框上运行cpan(1),则可能会出现这种情况。在没有默认值的情况下,它会发出嘎嘎声并陷入提示循环,你需要做出选择,但没有能力这样做。在运行cpan(1)之前,shell中的export PERL_MM_USE_DEFAULT=0当然会暂时重新启用输入。

答案 1 :(得分:8)

要防止CPAN客户端询问是否安装先决条件,请以交互模式启动它并输入命令:

o conf build_requires_install_policy yes
o conf prerequisites_policy follow
o conf commit

commit命令是可选的,但它会更新默认配置,我怀疑这是你想要的。如果没有它,您可能会或可能不会(取决于您的CPAN配置中是否启用了autocommit)每次要进行无提示安装时都需要进行此更改。

这些更改将处理所有CPAN客户端关于是否安装依赖项的例行问题。对于在其安装脚本中嵌入了问题的发行版,您可能还需要添加

o conf inactivity_timeout 60

设置在自动使用问题的默认答案之前等待响应的时间。 (将其设置为0可将其更改为“永远等待”。)

答案 2 :(得分:1)

仅仅是:

$ yes | sudo perl -MCPAN -e 'install DBI'

禁止!你的问题解决了: - )

答案 3 :(得分:0)

在此处附加答案,您还可以在位于/usr/share/perl5/CPAN/Config.pm的配置文件中进行这些更改。

'build_requires_install_policy' => q[yes],
'prerequisites_policy' => q[follow],

这有助于我自动化安装,因为默认情况下CPAN没有这些配置。