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



我想使用 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");
};

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

为什么不使用 FreeBSD Ports Collection 呢?

使用 pkg(8( 如果你只想要默认值

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

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

使用端口(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 手册 了解更多细节 (如在您的机器上获取端口树副本的说明(。

如果您只想要默认值,则可以像这样将BATCH=YES传递给make:make BATCH=YES install

如果您需要任何其他软件包,或者您必须调整现有软件包,使其超出官方端口中提供的软件包,那么您可以为自己获取端口树的副本和您自己的端口/根据自己的喜好修改现有端口。有关更多详细信息,请参阅搬运工手册。

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

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

我为此得到了一个解决方案,即当安装任何软件包之间出现提示时,无论是自动还是手动,提示都会在 15 秒后自动超时,并且进一步安装照常进行。 而且,如果只有提示"是",我们也可以在管道(|(中给出是。

最新更新