6

通常在 linux Debian 中,我们会这样做以非交互方式安装软件包,例如

sudo apt-get install -y Package_x_z

#[-y --assume-yes]

我们如何在安装 perl 模块时做同样的事情,例如

sudo perl -MCPAN -e 'install DBI'
4

4 回答 4

31

该提示(通常)来自 ExtUtils::MakeMaker 的 prompt() 函数。插入您的.bashrc export PERL_MM_USE_DEFAULT=1(或您喜欢的 shell 的等效项)以停止提示。ExUtils::MakeMaker 手册页记录了它:

PERL_MM_USE_DEFAULT

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

请注意,如果您在尚未配置 CPAN 存储库的机器上运行 cpan(1),这可能会给您带来麻烦。它会嘎嘎作响并卡在一个没有默认值的提示循环中,您需要做出选择,但没有能力这样做。export PERL_MM_USE_DEFAULT=0在运行 cpan(1) 之前在 shell 中当然会暂时重新启用输入。

于 2013-08-27T11:20:22.437 回答
11

为了防止 CPAN 客户端询问是否安装先决条件,请以交互模式启动它

perl -MCPAN -e shell

并输入命令:

o conf build_requires_install_policy yes
o conf prerequisites_policy follow
o conf commit

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

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

o conf inactivity_timeout 60

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

于 2013-08-27T08:10:20.280 回答
4

怎么样:

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

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

于 2018-05-20T07:39:45.653 回答
0

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

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

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

于 2017-09-11T20:06:58.200 回答