如何在没有任何提示的情况下使用Perl脚本在FreeBSD中自动安装Perl包?

时间:2018-05-31 07:42:33

标签: perl automation packages freebsd cpan

我想使用Perl脚本自动安装Perl包。我正在使用的代码是

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use CPAN;
eval "use JSON" 
    or do {
    CPAN::install("JSON");
};
eval "use Net::Address::IP::Local" 
    or do { 

    CPAN::install("Net::Address::IP::Local");
};
eval "use Net::OpenSSH" 
    or do { 

    CPAN::install("Net::OpenSSH");
};
eval "use Net::SCP::Expect" 
    or do { 

    CPAN::install("Net::SCP::Expect");
};

在脚本运行期间,它会询问是或否,密码等提示。如何自动处理这些提示?我必须在许多服务器上部署它,所以我必须自动化它。

2 个答案:

答案 0 :(得分:3)

为什么不使用FreeBSD Ports Collection

如果您只想要默认值

,请使用pkg(8)

看起来可以简化为只安装几个预编译的软件包:

pkg install -y p5-JSON p5-Net-Address-IPv4-Local p5-Net-OpenSSH p5-Net-SCP-Expect

如果您想要更好地控制您安装的软件

,请使用ports(7)

如果您想配置这些软件包(例如打开其他功能,禁用文档安装等),那么您可以自己从端口构建它们:

cd /usr/ports/converters/p5-JSON && make install
cd /usr/ports/net/p5-Net-Address-IPv4-Local && make install
cd /usr/ports/net/p5-Net-OpenSSH && make install
cd /usr/ports/net/p5-Net-SCP-Expect && make install

有关详细信息,请参阅FreeBSD Handbook(例如有关在计算机上获取端口树副本的说明)。

如果您只想要默认值,那么您可以将BATCH=YES传递给make:make BATCH=YES install

如果你需要任何额外的套餐,或者你必须调整现有的套餐超出官方端口提供的套餐,那么你可以给自己一个copy of the ports tree和你自己的端口/修改现有的端口到你的喜好。有关详细信息,请参阅Porter's Handbook

使用现有工具有效管理端口

端口通常是管理系统上的软件包的好方法。该框架易于使用和修改。您可能也有兴趣查看available ports management tools

答案 1 :(得分:1)

我得到了一个解决方案,当安装任何软件包之间有提示时,它是自动的或手动的,提示在15秒后自动超时,并且继续照常继续安装。如果只有“是”的提示,我们也可以在管道(|)中给出。