通常のUbuntu/Debianユーザーの場合、ある時点で次のエラーが発生する可能性があります。「ロックを取得できませんでした/ var / lib / dpkg / lock ’。これはたまたまエラーに関連しています「ロックを取得できませんでした/var/ lib / apt / lists/lock」 。以下は、そのようなエラーを表示するスクリーンショットです。
これは致命的ではないエラーであり、通常は大きな懸念事項ではありません。後で説明するように、簡単に解決できます。しかし、そもそも何が原因なのでしょうか。調べてみましょう。
エラーの原因
このエラーの一般的な原因は、プロセスがAPTパッケージマネージャーを使用してソフトウェアを更新/アップグレード/インストールするか、システムでパッケージ管理を実行している場合です。これが発生すると、プロセスはロックファイルを使用してdpkgファイルをロックし、別のプロセスがデータを変更しないようにします。これにより、システム内の重要なファイルのエラーや破損が発生する可能性があります。
このエラーが発生するたびに、APTを実行している別の同時プロセスが存在する可能性が高くなります。これは、別の端末で同時に実行されているプロセスである可能性があります。このエラーは、ターミナルでCTRL + Cを押したり、ターミナルウィンドウを誤って閉じたりして、更新またはアップグレードプロセスが中断され、途中で終了した場合にも発生する可能性があります。
ロックを取得できませんでした/var/ lib / dpkg/lockエラーを解決する方法
エラーを修正し、APTパッケージマネージャーの使用に戻るのに役立つヒントをいくつか紹介します。
プロセスが完了するのを待ちます
システムの更新やアップグレード、アプリケーションのインストールなどのコマンドでAPTパッケージマネージャーが使用されている別のターミナルセッションがある場合は、操作を正常に終了させてください。完了後、必要なコマンドを実行し、APTを使用して他の操作を実行できます。
APTパッケージマネージャーを使用してプロセスを終了します
パッケージインデックスのアップグレードや更新のキャンセルなど、APTを使用するプロセスを中断した場合は、最初に、次のpsコマンドを使用してAPTを使用するプロセスを特定します。
$ ps aux | grep -i apt
出力から、APTがrootによって開始された2つのプロセスによって使用されていることがわかります。プロセスにはPIDがあります3994 および3999 。 APTを使用してプロセスを特定したら、次のアクションはプロセスを強制終了または終了することです。
これを実現するには、次のようにkillコマンドを使用します。
$ kill -9 PID
出力から、 3994のPIDを持つプロセスを強制終了します および3999 次のように:
$ kill -9 3994
$ kill -9 3999
-9 フラグはSIGKILLシグナルをトリガーし、プロセスを正常に終了させずにプロセスを即座に終了します。
より簡単な方法は、 killallを使用することです。 示されているコマンド。
$ killall apt apt-get
問題のあるプロセスを強制終了したら、コマンドでAPTパッケージマネージャーの使用に進むことができます。
ロックファイルを削除する
適用できる他の修正は、ロックファイルを削除することです。前に説明したように、ロックファイルは2つの異なるプロセスによるデータへのアクセスを防ぎます。ロックファイルを削除するには、次のコマンドを実行します。
$ sudo rm /var/lib/dpkg/lock
$ sudo rm /var/lib/dpkg/lock-frontend
そして最後に、パッケージを再構成します。
$ sudo dpkg --configure -a
結論
これらのソリューションはいずれも、このエラーを回避し、APTパッケージマネージャーを他の操作に使用できるようにするのに役立ちます。何がうまくいったか教えてください。