如何在安装过程中从 shell 脚本选择交互式提示的响应

如何在安装过程中从 shell 脚本选择交互式提示的响应

我正在编写一个 shell 脚本,以便一次性在我的 Ubuntu PC 上安装所有需要的应用程序(同时我可以散步或做其他事情)。对于大多数应用程序来说,添加到-y语句末尾apt-get install可以很好地避免任何用户参与。我的脚本看起来像这样:

#!/bin/bash
add-apt-repository ppa:webupd8team/sublime-text-3 -y
apt-get update -y
apt-get upgrade -y
apt-get install synaptic -y
apt-get install wireshark -y

虽然我不再需要担心Do you want to continue? [Y/n]or Press [ENTER] to continue or ctrl-c to cancel adding it,但问题在于wireshark,它需要对交互式提示做出响应,如下所示:

Wireshark提示符

如何避免这种强制干预?

答案1

配置德布会议数据库:

echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections

然后,安装Wireshark

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install wireshark

您可能还想抑制输出apt-get。在这种情况下:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install wireshark > /dev/null

答案2

apt/dpkg 系统能够提供无人值守或非交互式安装。

这涉及将DEBIAN_FRONTEND变量设置为noninteractive并使用-y标志。例如:

export DEBIAN_FRONTEND=noninteractive
apt-get -y install [packagename]

如果出现错误,您可能需要设置该q选项以更强烈地说服dpkg您实际上正在进行非交互式安装:DEBIAN_FRONTEND=noninteractive apt-get -yq install [packagename]

在某些情况下,按照稍后在同一脚本/shell 进程中安装的某些软件包的提示可能会更容易,在这种情况下,您可能希望取消导出变量DEBIAN_FRONTEND

unset DEBIAN_FRONTEND

对于配置选项的预先设置,debconf-utils安装它很有用,这将使用以下命令debconf-get-selections

sudo apt-get install debconf-utils

您可能会觉得有用的资源

相关内容