debconfパスワードフィールドをどのようにプリセットしますか?

debconfパスワードフィールドをどのようにプリセットしますか?

私は以前に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-selectionsctrl-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

最後に、残念ながら、パッケージにどのオプションを使用できるかを見つけるのは難しいです。あなたのオプションは次のとおりです。

  1. パッケージをダウンロードし、解凍しsudo apt-get download [package-name] [dir]てファイルをdpkg-deb -R [filename] [unpacked-dirname]調べます。[unpacked-dirname]/DEBIAN/templates
  2. 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}';

関連情報