サーバー

エラー対処”Could not get lock /var/cache/apt/archives/lock”を解決する方法

”Could not get lock /var/cache/apt/archives/lock”のイメージ

ときどき、処理が長いコマンドを打ってしまったあとにメモリ不足で延々と処理がループしてしまうときや、途中で離席したくて処理を止めたいときがあります。
※セキュリティ上、サーバへログインした状態で離席するのは危険。

そんなことをしていると、たまにサーバの特定のコマンドがロック状態になってしまうのです。
なお、本記事はUbuntu 16.04 LTSでの話となります。

E: Could not get lock /var/cache/apt/archives/lock
 - open (11:Resource temporarily unavailable)`

上記のようなエラーが出たら apt-get コマンドが打てなくなります。
数ステップで復帰できるので、その流れを紹介します。

残存するプロセスを断ち切る

一番最初に、processにaptが残っている状態から解放します。

ps aux | grep -i apt

と打つとapt-getのプロセスが残っていることを確認できます。
これを一旦ストップさせます。

$ sudo killall apt-get

とすれば、apt-getプロセスがkillされ、中途半端に残されたapt-getプロセスのせいでブロックされることがなくなります。
上記コマンドのみで解決する場合もありますが、もしそれで解決しなければ以下の流れを試してみましょう。

lockファイルを削除する

Apt系コマンドは物理ファイルとしてlockファイルを残すことがあります。
一箇所ではないのですが、どれか一つヒットすればいいので、以下のコマンドを試してみてください。

$ sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/cache/apt/archives/lock
$ sudo rm /var/lib/dpkg/lock
$ sudo dpkg --configure -a

ライブラリの入っているディレクトリやキャッシュディレクトリ、そしてDebianのパッケージを表すdpkgのディレクトリの中にあるlockファイルを削除します。
そしてdpkgのlockファイルを削除したあとは念の為、再構成させておきましょう。

サーバ構築はとにかく焦らないことが大事

何か問題が起きたとしても、たいていの物事は解決できるようになっています。
もちろん間違ったファイルを消してしまって復元できない場合はありますが、そういったことが起こらないように防ぐ対処方法もあります。

何よりもまず、焦ってとにかくコマンド叩いてみる、ということはせず、正しい方法で復帰させることが大切です。

ABOUT ME
UOT合同会社 / SOT Co.,Ltd 合同開発部
UOT合同会社 / SOT Co.,Ltd 合同開発部
UOT合同会社 / SOT Co.,Ltd開発部の合同公式ブログ。 代表がITエンジニア出身のデジタルノマド→日本とベトナム・ホーチミンでIT企業設立。 海外デジタルノマドやエンジニアのリモートワーク、プログラミング、オフショア開発やミニラボ情報などをまとめていきます。