我正在編寫一個 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
,它需要對互動式提示做出回應,如下所示:
如何避免這種強制干預?
答案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