为了工作,我必须准备很多台电脑。我必须将一堆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
使用不同的睡眠时间来延迟“输入”、回显空格" "
甚至只是回显应该发送换行符“返回”。