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/lock
dpkg
重要なのは、ロックに関する警告が表示されたら/var/lib/dpkg/lock
ファイルを削除する必要がなく、ユーザーまたはプロセス(たとえば、で始まるプロセスunattended-upgrades
)がすでにパッケージ管理プロセスを実行していることを確認する必要があることです。このプロセスが中断される可能性があるため、プロセスを終了して潜在的なデータベース破損を修復する必要があります。これは、次のアドバイスに従って達成されます。関連投稿。もう一度申し上げますが、ファイルを削除することがロックを解除する最善の方法ではないことを思い出してください。dpkg
問題が解決しない場合は、悪意のあるプロセスを終了して修正する必要があります。
特定の質問に答えるには:
...パッケージをインストールしてpostinstを実行すると、ロックされたままになります。
dpkg
パッケージ管理プロセスが完了した場合にのみロックする必要があります。 postinstスクリプトは、パッケージ管理プロセスに属することができますが、リリースされた/var/lib/dpkg/lock
場合やそのバリエーションが予定されている場合は、パッケージマネージャに尋ねるべき質問です。