debconf
インストール中にUbuntu 16.04で構成パッケージを使用中に、次の問題が発生しました。
より正確には、このパッケージはdebconf
構成ファイルを保存してからpostinst
スクリプトからサービスを開始するために使用されます。さらに、サービスはdebconf
モジュールを使用して前の手順で保存した設定をロードします。
ただし、次のエラーによりサービスがsystemd
開始されません。
debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable
私が知っている限り、このファイルはdpkg
まだフロントエンドを使用してアクセスされており、debconf
サービスが別のフロントエンドを起動しようとすると競合が発生します(環境変数はDEBIAN_HAS_FRONTEND
サービスに渡されません)。DEBIAN_HAS_FRONTEND
スクリプトでenv変数を強制的に適用しようとしましたが、他のエラーが発生しました。
dpkg
プロセスが終了してdebconf
完了したら、デーモンを強制的に起動する必要があると思います。どんなアイデアがありますか?
ベストアンサー1
それで、ついに問題を見つけて、後で誰かに役立つかどうかを投稿します。
前述のように、postinst
スクリプトでサービスを開始しようとしていますが、サービスがいくつかの構成パラメータを取得しようとしていますが、すでに実行中のインスタンスがあるため、debconfig
エラーが発生します(すべての構成がファイルにあるにもかかわらず)。 、ファイルではありません)。debconf
config
postinst
当時の問題は、スクリプトdebconf
の実行中にpostinst
私が使用していないフロントエンドが有効になっていることでしたdebconf
。しかし、ロードされた行に注釈を付けましたconfmodue
。
# . /usr/share/debconf/confmodule
確かに、dpkg-reconfigure
(私も推測していますdpkg
。)ファイル(、、および)の "confmodule"文字列と一致するconfmodule
とロードされると見なされます。したがって、confmoduleを効果的にロードしていない間、dpkg-reconfigureはフロントエンドを解放しなかったため、サービスは他のインスタンスを起動できませんでした。解決策は単に行を削除することです。config
postinst
prerm
debconf