以非交互方式安装Perl模块,并假定给定选项为“是”

以非交互方式安装Perl模块,并假定给定选项为“是”,perl,cpan,Perl,Cpan,通常在LinuxDebian中,我们这样做是为了以非交互方式安装软件包,例如 sudo-apt-get-install-y-Package\u x\u z #[-y --assume-yes] 我们如何在安装perl模块时做到这一点,例如 sudo perl -MCPAN -e 'install DBI' 要防止CPAN客户端询问是否安装先决条件,请以交互模式启动它 perl -MCPAN -e shell 然后输入以下命令: o conf build_requires_install_p

通常在LinuxDebian中,我们这样做是为了以非交互方式安装软件包,例如

sudo-apt-get-install-y-Package\u x\u z

#[-y --assume-yes]
我们如何在安装perl模块时做到这一点,例如

sudo perl -MCPAN -e 'install DBI'

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

perl -MCPAN -e shell
然后输入以下命令:

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以将其更改回“永远等待”。

提示(通常)来自ExtUtils::MakeMaker的prompt()函数。在.bashrc(或您首选的shell的等效程序)中,按住
export PERL\u MM\u USE\u DEFAULT=1
,停止提示。ExUtils::MakeMaker手册页将其记录如下:

PERL\u MM\u使用默认值 如果设置为真值,则MakeMaker的提示函数将始终返回默认值 无需等待用户输入


请注意,如果您在尚未配置cpan存储库的机器上运行cpan(1),这可能会对您造成影响。它会嘎嘎作响,并在一个没有默认值的点上陷入提示循环,您需要做出选择,但没有能力这样做<在运行cpan(1)之前,代码>在shell中导出PERL_MM_USE_DEFAULT=0,当然会临时重新启用输入。

在这里添加一个答案,您还可以在位于/usr/share/perl5/cpan/config.pm的配置文件中进行这些更改

'build_requires_install_policy' => q[yes],
'prerequisites_policy' => q[follow],
这有助于我自动化安装,因为CPAN在默认情况下没有这些配置。

那么只需:

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

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

有很多好答案。有没有理由投反对票?有勇气写一句话。哪一个对每个人都更有用?有没有非交互的方法?我有一个用例,我需要为几个服务自动执行此操作,所以我希望可以在单个命令中执行此操作。。。