我想编写一个 bash 或 perl 脚本来在基于 debian 的机器上安装一些软件包。
我希望它是这样的:
aptitude install package1
aptitude install package2
但是,我不知道如何在提示符下通过脚本自动说“是”以确认您要安装该包。有人能给我一个 perl 和 bash 中的例子吗?
恭喜!
答案1
aptitude 安装 -y 软件包1 软件包2 软件包3
答案2
我猜这实际上不是一个脚本,但您可以安装puppet
并使用包类型。然后只需创建一个包含一堆package
指令的文件即可。
例如:
package { zsh:
ensure => latest
}
package { vim-enhanced:
ensure => latest,
name => $operatingsystem ? {
'centos' => 'vim-enhanced',
'ubuntu' => 'vim',
}
}
如果您想扩大范围,还可以使用 puppet 自定义其他内容,例如 shell 和 .rc 文件等。这听起来可能有点过头了,但从长远来看,一点点额外的努力可能会有回报。
答案3
除了使用 -y 标志来表示是答案之外,您还需要设置 DEBIAN_FRONTEND=noninteractive 以防止弹出 debconf 设置问题。
DEBIAN_FRONTEND=noninteractive apt-get install PACKAGE -y
话虽如此,从长远来看,听从 Kyle 的建议并研究一下 Puppet 之类的配置管理系统可能是更好的选择。
答案4
我的答案比原始问题的范围略广,但如果您想从头开始在您正在设置的多台机器上重复执行此操作,那么我建议您花时间研究启动。(我假设您是提到 aptitude 的 debian 衍生产品)。学习曲线很陡峭,文档有点不完整,但如果您需要的话,值得坚持下去。
如果您必须定期使用这样的机器,这是理所当然的。我们的机器从空白到完全配置只需大约 8 分钟,并且自动安装了大量自定义软件包。
为了获得加分,还要研究某种适当的缓存机制。
一个非常好的设置是使用虚拟机映像来创建构建服务器/apt 缓存,以避免污染现有的机器