通常在linux Debian中我们这样做是非交互式安装包,例如
sudo apt-get install -y Package_x_z
#[-y --assume-yes]
我们如何在安装perl模块时也这样做,例如
sudo perl -MCPAN -e 'install DBI'
答案 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没有这些配置。