我想使用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");
};
在脚本运行期间,它会询问是或否,密码等提示。如何自动处理这些提示?我必须在许多服务器上部署它,所以我必须自动化它。
答案 0 :(得分:3)
为什么不使用FreeBSD Ports Collection?
看起来可以简化为只安装几个预编译的软件包:
pkg install -y p5-JSON p5-Net-Address-IPv4-Local p5-Net-OpenSSH p5-Net-SCP-Expect
如果您想配置这些软件包(例如打开其他功能,禁用文档安装等),那么您可以自己从端口构建它们:
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秒后自动超时,并且继续照常继续安装。如果只有“是”的提示,我们也可以在管道(|
)中给出。