apt-get 的静默安装

apt-get 的静默安装

为了工作,我必须准备很多台电脑。我必须将一堆sudo apt-get install命令塞进终端——这很繁琐。我可能可以将它们全部放入 sh 脚本中(也许),但有些命令需要sudo add-apt-repository通过命令添加新存储库( )或添加新密钥(??)gpg——并且它们要求用户按 ENTER。

有没有办法对所有问题都说“是”?这可能需要在 apt-get 和 gpg 命令中添加一些选项?

答案1

您可以附加--assume-yes--force-yes标志以自动对所有表示“是”。

sudo apt-get --assume-yes --force-yes install <packagename(s)>

要使这些更改永久生效,请编辑/etc/apt/apt.conf并添加行

APT::Get::Assume-Yes "true";    
APT::Get::force-yes "true";

这是apt-get说 -

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts and
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

   --force-yes
       Force yes; this is a dangerous option that will cause apt to
       continue without prompting if it is doing something potentially
       harmful. It should not be used except in very special situations.
       Using force-yes can potentially destroy your system! Configuration
       Item: APT::Get::force-yes.

答案2

除非对预配置的系统进行自定义安装,否则我可能会在每个系统上运行安装脚本。

需要按回车键的命令有哪些?add-apt-repository的帮助宣传了它的-y选项:

$ sudo add-apt-repository --help
Usage: add-apt-repository [options] repository

Options:
  -h, --help  show this help message and exit
  -y, --yes   force yes on all confirmation questions

下面的帮助链接说,添加 PPA 时“如果需要公钥并且可用,则会自动下载并注册。”还有像、等这样的软件包,ubuntu-keyring其中ubuntu-extras-keyring包含linuxmint-keyring各种存储库的密钥。man gpg如果您坚持使用它,应该会告诉您如何让它自动安装密钥。

或者你可以sources.list直接用sed/编辑文件awk,或者如果系统相同,只需复制“完成”的文件即可。
此 Ubuntu 帮助页面有更多信息如何从命令行管理软件存储库。

如果你正在准备很多系统,我是否可以假设你只需要下载一次 .deb 软件包,然后将它们全部安装到每台机器上,而不是更新然后下载它们到每个系统?如果你将所有 .deb 都放在一个文件夹中,则此命令将安装所有软件包:

  • sudo dpkg -iR [deb-directory]

仅供参考,我以前看到过一个奇怪的包,它会等待一个enter才能完成安装,显然它是在它自己的一个配置脚本中,甚至连 都apt-get无法--force-yes与它配合使用。你没有这种类型的包,是吗?


或者,如果你只是想强制输入一堆按键进入 telnet(也适用于其他方法)终端,您可以使用如下 bash 脚本:

{
echo "open 192.168.55.55"
sleep 0.5
echo "$login"
sleep 0.5
echo "$password"
sleep 0.5
echo "command1"
sleep 2
echo " "
sleep 5
echo "exit"
} | telnet

使用不同的睡眠时间来延迟“输入”、回显空格" "甚至只是回显应该发送换行符“返回”。

相关内容