【问题标题】:Install Perl module with assume yes for given options non-interactively以非交互方式安装 Perl 模块,假设给定选项是
【发布时间】:2013-08-29 18:33:17
【问题描述】:

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

sudo apt-get install -y Package_x_z

#[-y --assume-yes]

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

sudo perl -MCPAN -e 'install DBI'

【问题讨论】:

  • 很多很好的答案here.
  • 反对投票的任何理由?有勇气写一个句子lz。哪个对大家更有用

标签: perl cpan


【解决方案1】:

为了防止 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 可将其改回“永远等待”。)

【讨论】:

  • 有没有办法以非交互方式做到这一点?我有一个用例,我需要为多个服务自动执行此操作,因此我希望可以在单个命令中执行此操作...
【解决方案2】:

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

PERL_MM_USE_DEFAULT

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      刚刚呢:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-04
        • 2017-12-03
        • 2014-08-25
        • 2013-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多