web-dev-qa-db-ja.com

インタラクティブなプロンプトで個々のDebian8パッケージのインストールを自動化する

私はbashスクリプトを介していくつかのパッケージのインストールを自動化しようとしています。それらは既存のchrootされたファイルシステムにインストールされます。ただし、一部のパッケージにはインタラクティブなユーザー入力が含まれています(つまり、ddclientがダイナミックDNSサービスプロバイダーの選択を要求します)。これは、私が簡単に自動化することはできませんでした。

debconf preseedingは、インタラクティブなパッケージインストールを自動化する最も一般的な方法のようですが、私が読んだすべての例は、個々のパッケージだけでなく、Debianインストール全体を対象としていることを示しています。

私はこれをフォローしています インタラクティブなDebianパッケージのインストールを自動化する方法 しかし、それは実際には詳細を説明していません。

前もって感謝します!

2
kapkong

AnsibleやSaltなどの「適切な」デプロイメントおよび構成管理ツールを使用する以外に、Debianパッケージを事前構成するにはdebconfプレシードで十分です。本格的なインストールに限定されるものではありません。任意の数のパッケージに適用できます。

それを始める最も簡単な方法は、パッケージをインストールして質問に答えることによって、インストールしたいパッケージを手動で構成することです。次に、debconf-get-selectionsを実行します(debconf-utilsパッケージから)。これにより、インストールしたばかりのパッケージの設定を含む、保存されているすべての設定がコメント内の質問テキストとともに一覧表示されるため、事前に設定する質問を簡単に見つけることができます。フォーマットは

<package> <debconf key> <type> <value>

例えば

# System's default paper size:
# Choices: letter, a4, note, legal, executive, halfletter, halfexecutive, 11x17, statement, folio, quarto, 10x14, ledger, tabloid, a0, a1, a2, a3, a5, a6, a7, a8, a9, a10, b0, b1, b2, b3, b4, b5, c5, DL, Comm10, Monarch, archE, archD, archC, archB, archA, flsa, flse, csheet, dsheet, esheet
libpaper1       libpaper/defaultpaper   select  a4

プレシードする設定をファイルに保存してから、ターゲットシステムでdebconf-set-selectionsdebconfパッケージ内)を実行します。ファイルはローカルで利用可能で、最初の引数として名前が付けられているか、その内容です。パイプ:

cat preseed-file | ssh remotehost debconf-set-selections

これを行うターゲットシステムにパッケージをインストールします。

3
Stephen Kitt