私はbashスクリプトを介していくつかのパッケージのインストールを自動化しようとしています。それらは既存のchrootされたファイルシステムにインストールされます。ただし、一部のパッケージにはインタラクティブなユーザー入力が含まれています(つまり、ddclientがダイナミックDNSサービスプロバイダーの選択を要求します)。これは、私が簡単に自動化することはできませんでした。
debconf preseedingは、インタラクティブなパッケージインストールを自動化する最も一般的な方法のようですが、私が読んだすべての例は、個々のパッケージだけでなく、Debianインストール全体を対象としていることを示しています。
私はこのインタラクティブなDebianパッケージのインストールを自動化する方法に従ってきましたが、詳細については実際には説明していません。
よろしくお願いします!
承認された回答:
AnsibleやSaltなどの「適切な」デプロイメントおよび構成管理ツールを使用する以外に、debconf
Debianパッケージを事前設定するには、事前シードで十分です。本格的なインストールに限定されるものではありません。任意の数のパッケージに適用できます。
それを始める最も簡単な方法は、パッケージをインストールして質問に答えることによって、インストールしたいパッケージを手動で構成することです。次に、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-selections
を実行します (debconf
内 パッケージ)ターゲットシステム上で、ローカルで利用可能で最初の引数として名前が付けられたファイル、またはパイプされたその内容のいずれか:
cat preseed-file | ssh remotehost debconf-set-selections
これを前に実行します ターゲットシステムにパッケージをインストールします。