Ubuntuの「管理ディレクトリ(/ var / lib / dpkg /)をロックできない」を修正


UbuntuLinuxまたはLinuxMint(私が実際に日常業務を行うための主要なオペレーティングシステムとして使用している)などの派生物でapt-getコマンドまたは比較的新しいAPTパッケージ管理ツールを使用しているときに、次のエラーが発生した可能性があります。管理ディレクトリ(/ var/lib/dpkg /)をロックすることは、コマンドラインでそれを使用する別のプロセスです。

このエラーは、エラーの原因を正確に知らない可能性のある新しいLinux(Ubuntu)ユーザーにとって特に厄介なものになる可能性があります。

以下は、Ubuntu16.10でのロックファイルエラーを示す例です。

[email protected]:~$ sudo apt install neofetch
[sudo] password for tecmint:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg), is another process using it?

以下の出力は、同じエラーの別の考えられるインスタンスです。

E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/ 
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) 
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

将来遭遇した場合に備えて、上記のエラーをどのように解決できますか?このエラーに対処する方法はいくつかありますが、このガイドでは、エラーを解決するための2つの最も簡単でおそらく最も効果的な方法について説明します。

1.すべてのapt-getまたはaptプロセスを見つけて強制終了します

以下のコマンドを実行して、名前がaptという単語で構成されるすべてのプロセスのリストを生成します。 ps コマンドとgrepコマンドをパイプラインと一緒に使用すると、すべてのaptまたはapt-getプロセスを含むリストが表示されます。 。

$ ps -A | grep apt

上記のコマンドの出力に表示される各apt-getまたはaptプロセスについて、以下のコマンドを使用して各プロセスを強制終了します。

プロセスID(PID)は、上のスクリーンショットの最初の列にあります。

$ sudo kill -9 processnumber
OR
$ sudo kill -SIGKILL processnumber

たとえば、 9 がSIGKILLシグナルのシグナル番号である以下のコマンドでは、最初のaptプロセスを強制終了します。

$ sudo kill -9 13431
OR
$ sudo kill -SIGKILL 13431

2.ロックファイルを削除します

ロックファイルは、Linuxシステム上の別のファイルや一部のデータへのアクセスを防ぐだけです。この概念は、Windowsや他のオペレーティングシステムにも存在します。

apt-getまたはaptコマンドを実行すると、これらのディレクトリ/ var/lib/apt/lists /、/ var/lib/dpkg /、および/ var/cache/apt/archives /のいずれかにロックファイルが作成されます。

これは、すでに実行されているapt-getまたはaptプロセスが、apt-getまたはaptによって使用されているファイルを処理する必要があるユーザーまたは他のシステムプロセスによって中断されるのを防ぐのに役立ちます。プロセスの実行が終了すると、ロックファイルが削除されます。

重要:上記の2つのディレクトリでロックがまだ存在し、apt-getまたはaptプロセスが実行されていない場合は、何らかの理由でプロセスが保留されている可能性があります。そのため、ロックファイルを削除する必要があります。エラーをクリアします。

まず、以下のコマンドを実行して、/var/lib/dpkg/ディレクトリにあるロックファイルを削除します。

$ sudo rm /var/lib/dpkg/lock

その後、パッケージを次のように再構成するように強制します。

$ sudo dpkg --configure -a

または、次のように/var/lib/apt/lists/のロックファイルとキャッシュディレクトリを削除します。

$ sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/cache/apt/archives/lock

次に、パッケージソースリストを次のように更新します。

$ sudo apt update
OR
$ sudo apt-get update

結論として、apt-getまたはaptとaptitudeコマンドを実行しながら、Ubuntu(およびその派生物)ユーザーが直面する一般的な問題に対処するための2つの重要な方法について説明しました。

この一般的なエラーに対処するために共有する他の信頼できる方法はありますか?次に、以下のフィードバックフォームからご連絡ください。

さらに、実行中のプロセスを見つけて強制終了する方法を学び、Linuxでプロセスを終了するためのkill、pkill、killallコマンドの簡単なガイドを読むこともできます。