私は以前にUbuntuでdebconfをプロビジョニングする方法について質問し、答えたことがあります。以前にインストールされたパッケージでdebconfをどのようにプリセットするのですか?
config.datファイルに追加するだけで効果があることがわかりました。ただし、Passwords.datファイルに追加すると、スペース(または他の使用できないパスワード)が生成されるように見えるため、機能しません。 Passwords.dat プリセットは次のとおりです。
Name: couchdb/adminpass
Template: couchdb/adminpass
Value:
Owners: couchdb
Flags: seen
Name: couchdb/adminpass_again
Template: couchdb/adminpass_again
Value:
Owners: couchdb
Flags: seen
値フィールドに何でも追加しても構いません。とにかく管理者パスワードを入力しようとすると、Couchがクラッシュします。
debconfでパスワード情報を事前設定するには?
答え1
解決策が見つかったかどうかはわかりませんが、これを行うには良い方法や直感的な方法はないようです。しかし、いくつかの解決策があります...
まず試してみることができますdebconf-set-selections
(マニュアルページ(あまり役に立ちません))debconf
パック。これは、あるシステムから別のシステムに構成をミラーリングするためのようです。 1行ずつdebconf-get-selections > my-conf.debconf
コマンドを使用してファイルSTDIN
(おそらく他のシステムからパイプされたもの)を許可します。 (終了のために)コマンドを渡すことでdebconf-get-selections
開始することも、エコーを介してコマンドをパイプすることもできます。sudo debconf-set-selections
ctrl-d
入力構文は次のとおりです。
[package-name] [package-name]/[question-name] [type] [value]
たとえば、誰でもdebconfを介してsshdをインストールするときにデフォルトでrootパスワードを拒否するようにopensshサーバーを設定するには、次のようにします。
echo "openssh-server openssh-server/permit-root-login boolean false" | sudo debconf-set-selections
または、このプログラムを使用できますdebconf-communicate
。このプログラムはプログラムに似ていますdebconf-set-selections
が、見つかったコマンドを使用してより対話型のセッションを許可します。ここ。次のように使用できます。
$ sudo debconf-communicate
$ GET openssh-server/permit-root-login
$ 0 false
$ SET openssh-server/permit-root-login true
$ 0 value set
$ GET openssh-server/permit-root-login
$ 0 true
$ FSET openssh-server/permit-root-login seen true
$ 0 true
$ FGET openssh-server/permit-root-login seen
$ 0 true
$ SET openssh-server/permit-root-login false
$ 0 value set
これは、誰かがより良いdebconfフロントエンドを書くのに適した領域のようです。
もちろん、これをスクリプトとして書くことを望む場合は、最良の方法はパスですdebconf-set-selections
。
最後に、残念ながら、パッケージにどのオプションを使用できるかを見つけるのは難しいです。あなたのオプションは次のとおりです。
- パッケージをダウンロードし、解凍し
sudo apt-get download [package-name] [dir]
てファイルをdpkg-deb -R [filename] [unpacked-dirname]
調べます。[unpacked-dirname]/DEBIAN/templates
sudo debconf-show [package-name]
インストールされているパッケージの構成の問題を表示するために使用されます。 (パッケージは独自の名前で問題を登録する必要はありません。)
とにかく役立つことを願っています...
答え2
許可された答えで述べたように、debconf-set-selections
進行方法は次のとおりです。
デフォルトでは、まずパッケージを手動でインストールしてから、debconfデータベースでどのエントリが作成されたかを確認する必要があります(どうしたのか覚えていません。申し訳ありません)。
.sh
その後、これらの項目を事前にシードするスクリプトを作成できます。次のコードは、CouchDB 2.0パッケージインストーラを事前にシードする方法を示しています。
HOST = aaa
USER = bbb
COUCH_PSWD = ccc
debconf-set-selections <<< 'couchdb couchdb/bindaddress string 0.0.0.0';
debconf-set-selections <<< 'couchdb couchdb/cookie string monster';
debconf-set-selections <<< 'couchdb couchdb/mode string clustered';
debconf-set-selections <<< 'couchdb couchdb/nodename string couchdb@#{HOST}';
debconf-set-selections <<< 'couchdb couchdb/adminpass password #{COUCH_PSWD}';
debconf-set-selections <<< 'couchdb couchdb/adminpass_again password #{COUCH_PSWD}';