dpkgは正確にいつ起動し、ロックを停止しますか?

dpkgは正確にいつ起動し、ロックを停止しますか?

1つのパッケージだけをインストールし、そのpostinstが実行されたときにロックされ続けるかどうか疑問に思います。

答え1

dpkgファイルロックはパッケージ管理プロセスの開始時に設定され/var/lib/dpkg/lock、パッケージ管理プロセスが終了するまでロックが解除されます。

確認してくださいDebian Wikidpkg上海dpkg マンページ自体に関する追加情報dpkg。リンクも追加しますdpkg.orgAPIとファイル処理に関するより具体的なドキュメントがありますdpkg

しかもこの関連Stack Exchangeの投稿それがどのように/var/lib/dpkg/lock機能するか話し合う。

この資料に記載されているように、dpkgフロントエンドまたはそれ自体dpkgで使用されている場合は、fcntlアドバイザリロックを設定するためにシステムコールが呼び出されます。dpkgこのロックを取り付けて戻すことができるはずですfalse。このロックがすでに設定されている場合は続行できません。機能が完了したら、他のプロセスを使用できるように予約をdpkg解除します。/var/lib/dpkg/lockdpkg

重要なのは、ロックに関する警告が表示されたら/var/lib/dpkg/lockファイルを削除する必要がなく、ユーザーまたはプロセス(たとえば、で始まるプロセスunattended-upgrades)がすでにパッケージ管理プロセスを実行していることを確認する必要があることです。このプロセスが中断される可能性があるため、プロセスを終了して潜在的なデータベース破損を修復する必要があります。これは、次のアドバイスに従って達成されます。関連投稿。もう一度申し上げますが、ファイルを削除することがロックを解除する最善の方法ではないことを思い出してください。dpkg問題が解決しない場合は、悪意のあるプロセスを終了して修正する必要があります。

特定の質問に答えるには:

...パッケージをインストールしてpostinstを実行すると、ロックされたままになります。

dpkgパッケージ管理プロセスが完了した場合にのみロックする必要があります。 postinstスクリプトは、パッケージ管理プロセスに属することができますが、リリースされた/var/lib/dpkg/lock場合やそのバリエーションが予定されている場合は、パッケージマネージャに尋ねるべき質問です。

関連情報