シェル スクリプトからインストール中に対話型プロンプトの応答を選択する方法

シェル スクリプトからインストール中に対話型プロンプトの応答を選択する方法

私は、必要なすべてのアプリケーションを 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]またはについてはもう心配する必要はありませんが、 については、以下に示すように対話型プロンプトへの応答が必要となるという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

次にインストールしますワイヤーシャーク:

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をより確実にするためにオプションを設定する必要がある場合があります。 dpkgDEBIAN_FRONTEND=noninteractive apt-get -yq install [packagename]

場合によっては、同じスクリプト/シェル プロセスで後でインストールするパッケージの一部のプロンプトに従う方が簡単な場合があります。その場合は、変数をエクスポート解除する必要がありますDEBIAN_FRONTEND

unset DEBIAN_FRONTEND

構成オプションを事前に設定するにはdebconf-utils、次のコマンドが役立つようにインストールしておくと便利ですdebconf-get-selections

sudo apt-get install debconf-utils

役に立つかもしれないリソース

関連情報