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

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

私は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

その後、インストールしてください。ワイヤーシャーク:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install wireshark

出力を抑制することもできます。適切。この場合:

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

役に立つリソース

関連情報