如何在安裝過程中從 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

您可能會覺得有用的資源

相關內容