dpkg -i
を使用してパッケージをインストールする必要があるとします。これは、ユーザー名やパスワードなどの値をユーザーに要求します。
ターミナルから簡単に実行でき、インストールを続行できます。
しかし、この計画では、インストールを自動化することはできません。たとえば、パラメーターを対話的に受け取るパッケージのインストール用のスクリプトを作成する場合です。
だから、対話型(ユーザー名とパスワードの入力を求める)でありながら、スクリプトから起動してインストールプロセスを自動化できるdpkgインストールプランが必要です。
これについてどうすればいいですか?代替手段はありますか?
そのようなことのために、expect
スクリプトを書くことができます。処理はそれほど難しくありません。
まず、インタープリターをインストールする必要があります。
apt-get install expect
次に、たとえば次のように記述できます。
#!/usr/bin/expect -f
set timeout 30
set password "pass"
set username "user"
#run the command
spawn dpkg -i package.deb
# Look for username Prompt
expect "*?sername:*" #<--- this statement is important it wait's for a Prompt "username:"
send "$username\r"
# Look for passwod Prompt
expect "*?assword:*" #<--- the same with the "password:" Prompt
send "$password\r"
#dpkg -i continues
もちろん、スクリプトは実行可能でなければなりません。 Expect は、スクリプト(ssh、ftp、...)を介した対話型ターミナルプログラムの制御に最適です。
Debconf-utilsパッケージのツールを使用して、事前設定ファイルを作成できます。次を使用して、事前構成ファイルを手動で作成できます。
<owner> <question> <type> <value>
または例として:
my-package username string Bob
my-package password string I$aN1ceGuy
より簡単にあなたのマシンにインストールして実行する:
debconf-get-selections | grep my-package
出力を使用してファイルを作成します。
ファイルを入手したら、次を使用します。
debconf-set-selections <filename>.
dpkg -i my-package
Filenameにリストされた選択がデフォルトで使用され、パッケージはサイレントインストールされます。