【Ubuntu 11.10】アップデートしようとすると、”ロック /var/lib/apt/list/lockが取得できません。”とかのエラーで実行できない時の対処 [ubuntu]
Ubuntu 11.10(Oneiric)になってから、アップデートをしようとした時にエラーがでてアップデートできなくなることが時々出るようになりました。
アップデートには、atp-get やsynapticパッケージマネージャーやアップデートマネージャーなどで行いますが、いずれも実行できなくて、同じエラーがでます。また、dpkgやadd-apt-repositryなども効かないはずです。(未確認ですが、そうなってるはず)
apt-get をコマンドラインで使用した時は、下記のようになります。
oneiric@ocelot:~$ sudo apt-get update
[sudo] password for oneiric:
E: ロック /var/lib/apt/lists/lock が取得できませんでした - open (11: リソースが一時的に利用できません)
E: ディレクトリ /var/lib/apt/lists/ をロックできません
E: ロック /var/lib/dpkg/lock が取得できませんでした - open (11: リソースが一時的に利用できません)
E: 管理用ディレクトリ (/var/lib/dpkg/) をロックできません。これを使う別のプロセスが動いていませんか?
このようになったら、私は次のようにしています。
1) 一度再起動してみる
一旦、全て終了して再起動します。
そして、もう一度ログインしてアップデートをしてみます。アップデートが出来ればOK。出来なければ次に進んで下さい。
2) Recovery Consoleに入る
まず、ログアウトしてログイン画面を出します。
下図のようにセッションを選ぶメニューを開いて「Recovery Console」を選んで、パスワードを入れてログインします。
そうすると下図のようにリカバリーコンソールが起動します。
※ちょっと見にくいし、小さい。
3) ロックファイルの削除
下記の2行を実行してロックファイルを削除します。
sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock
その後、下記の2行を行います。
sudo apt-get update
sudo apt-get install -f
最後に、exit と入力して抜けます。
4) 普通のセッション(ubuntuとか)にログイン
あとは普段使用しているセッション(ubuntuやgnome)のセッションにログインして、アップデートするなり、dpkgを使用するなりします。
<< 簡単な解説 >>
Ubuntuはインストールしたパッケージをデータベースのような感じで持っています。ここで、apt-get やアップデートマネージャーを同時に複数しようすると、データベースが壊れてしまう可能性があります。
その為、データベースにアクセスするアプリケーションを同時に1つだけにする為に、lockというファイルを利用してデータベースにアクセスしているアプリケーション以外はアクセスできないようにしています。
ところが、途中でデータベースにアクセスしているアプリケーションが何らかのトラブルが発生して、異常終了してしまうと、lockファイルは「異常終了したアプリケーションがアクセスしている」という状態のまま残ってしまいます。
それで、アクセスしているアプリケーションが無いのに、他のアプリケーションや異常終了したアプリケーションを起動しても「他のアプリケーションが使用しています」といった主旨のエラーがでてしまうわけです。
このような方法は、同時に1つしかアクセスできないものに対してよく使われます。有限で複数の場合(同時に5つまでとか)はセマフォーとかが使用されます。
←パソコン用テプラ
個人的な都合でテプラを調べていました。
パソコンに繋げて出力できるテプラって
あるだろうな~と思ったら、やっぱりありました。
ただ、普通のテプラより値段がちょっと高いです。