Ubuntu日本語フォーラム
ログインしていません。
apt-get updateで表示されるエラーの解決方法をご教授下さい。
私はLinux初心者です。Ubuntu 8.04を使用しLinuxの学習を行っています。
sudo apt-get update時に下記のエラーが発生し、解決方法がわかりません。
解決方法をご存知の方は、ご教授お願い致します。
E: Could not open lock file /var/lib/dpkg/lock - open (2 No such file or directory)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
一応root権限でログインをしています。
オフライン
Synaptic や アップデートマネージャを起動したまま端末から操作してないでしょうか?
オフライン
返信ありがとうございます。
Synapticやアップデートマネージャは起動しておりません。起動しようとすると下記のエラーが表示されます。
E: Could not open lock file /var/lib/dpkg/lock - open (2 No such file or directory)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
知識不足で誠に申し訳御座いませんが原因が分かる方ご教授ください。
オフライン
エラーメッセージを言葉どおりにとると、lockファイルがないため開くことができないといっているように見えます。
/var/lib/dpkgにlockという名前のファイルがあるか確認してみて下さい。
このファイルはどうやら空のファイルのようなので、無ければ作ってしまえばよいのではないかと思いますが、どうなんでしょう>識者のご意見伺いたく
<code>
sudo touch /var/lib/dpkg/lock
sudo chmod 640 /var/lib/dpkg/lock
sudo chown root:root /var/lib/dpkg/lock
</code>
とかでよいのでしょうか。
オフライン
返信ありがとうございます。
findでファイル検索した所、lockというファイルはありませんでした。
上記のコマンドを実行し、apt-get updateを行ったところ
E: ロックファイル /var/lib/dpkg/lock をオープンできません - open (21 Is a directory)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
と表示されました。
エラーメッセージが多少変わりましたが・・・
オフライン
hmatsueさんの考えは間違っていないと思うけどほとんどの場合はlockファイルが無いのではなく別の物が使用している場合が多いのでpetitbootangさんの指摘が違っているならば削除、中止、更新が出来ない作業中のパッケージが有るのかも。
$ sudo apt-get -f install
$ sudo rm /var/lib/dpkg/lock
$ sudo apt-get update
えーとまず、再起動すれば#2のlockを使っているソフトウェアの存在を消せて、1行目のコマンドで処理中で固まった操作を開放して2、3行目でlockファイルをシステムから自動で作り直し&アップデート。
ダメなら#1に逆戻りですが、、、
オフライン
Is a directory が気になるんですが
$ ls -l /var/lib/dpkg/lock
の結果を張り付けるか確認をしてみてください。(#6の実行前と後が有ればエラー21の今後の対策の資料になるかも)
オフライン
ひょっとしたら、ファイルかディレクトリかわからない場合は、
ls -ld /var/lib/dpkg/lock
のほうがよいような気がします。もし、これがディレクトリなら、再度、
ls -l /var/lib/dpkg/lock
も実行してもらうのがよいかなぁと。
オフライン
こんばんは
moomwalkさん による投稿:
一応root権限でログインをしています。
上のようにおっしゃっていますが、具体的にはどうやったのですか。
他のLinuxのディストリ同様に、root のパスワードを設定し、”名前=root”、”passward = rootのパスワード”でログインしたのなら、
その時点でロックファイルは使用されていますので、後から"sudo apt-get update"とやってもロックファイルを取得できないのでは。
Ubuntuでは禁じ手ですが.........
オフライン
hir0さん、weykさん返信ありがとうございます。
ls -ld /var/lib/dpkg/lock を実行した所、ファイルではなくディレクトリとして/var/lib/dpkg/lockが作成されていましたのでディレクトリを削除し
#4を実行し、apt-get updateを行いアップデート完了する事が出来ました。#1のエラーが発生した場合は、/lockのファイルを作成すると解決できる。覚えておきます。
皆様のおかげで解決できました。ありがとうございます。
またエラーが起きました。
システム→システム管理→アップデート・マネージャ→「アップデート・マネージャを開始しています。」と表示され読み込みの途中で以下のエラーメッセージが表示されました。
パッケージ情報を初期化できませんでした
パッケージ情報の初期化中に解決できない問題が発生しました。
'update-manager' パッケージのバグとして報告してください。バグ報告には次のエラーメッセージを含めてください:
'E:ファイル /var/lib/dpkg/status をオープンできませんでした - open (13 Permission denied), E:パッケージリストまたはステータスファイルを解釈またはオープンすることができません。'
一応、#4の/lockを/statusに変えて実行し再度アップデート・マネージャを起動してみましたがダメでした。
エラーばかりで誠に申し訳ございませんが原因がわかる方ご教授ください。お願い致します。
オフライン
funatogawaさん、返信ありがとうございます。
説明が下手で誠に申し訳ございません。
一般ユーザで sudo apt-get update
ROOTユーザで apt-get update を行いエラーが発生します。と違いを明確に書くべきでした。
今後このようなミスに注意致します。
オフライン
/var/lib/dpkg/statusは存在するか、まず確認して下さい。
エラーメッセージは権限がないと言われています。
アップデートマネージャを起動したとき、パスワードを聞かれましたか?(sudoでroot権限に昇格していますか?)
もしstatusが無い場合、/var/lib/dpkg/statusはlockと違い、内容のあるファイルなので適当なものを作って解決するわけにはいかないかと思います。
なにやらかなりおかしな状態になってしまっているようですが、おかしくなる直前にどんな操作をしていましたでしょうか。
例えばの話ですが、/varを消したり、移動したりしていますでしょうか。
最初の状態ではstatusがあったはずなのですが、どこかに残っていませんか?
オフライン
追加でこれも実行して結果を教えて下さい。
ls -lad /var ls -lad /var/lib ls -lad /var/lib/dpkg ls -la /var/lib/dpkg
オフライン
こんばんは
moonwalkさん による投稿:
一応、#4の/lockを/statusに変えて実行し再度アップデート・マネージャを起動してみましたがダメでした。
したことは『/var/lib/dpkg/statusを削除し、新たに作成した』でいいのですね。
/var/lib/dpkg/status-oldがあるか確認してください。もしあれば中身を確認、中身が50行ほどの内容があれば、
名前をstatusにしてコマンドラインから、apt-get updateをやってみてください。
status-oldもなかったり、あっても中身が空なら、使えませんので、aptシステムの再インストールをした方がよいのでは。
#1でエラーでできなかったのが未だに疑問です。
オートアップデートの最中だったのでは。いや違うな。今右上にアップデートマネージャが働いていたので端末からsudo apt-get update,sudo apt-get upgrade とやっても正常に実行されました。/var/lib/dpkg/status,/var/lib/dpkg/status-old,/var/lib/dpkg/statusのタイムスタンプが更新されましたので、正常に終わりました。
ともかく行動する前に、hmatsueさんの質問に答え、アドバイスを見てからでも遅くはありません。急ぐと大怪我の元です。
オフライン
すいません。訂正です。
誤 /var/lib/dpkg/status,/var/lib/dpkg/status-old,/var/lib/dpkg/status
正 /var/lib/dpkg/status,/var/lib/dpkg/status-old,/var/lib/dpkg/lock
編集できないのは辛い。(独り言)
apt systemは削除しないでください。削除してしまうと大変なことになります。上書きで再インストールを!
オフライン
hmatsueさん、返信ありがとうございます。
/var/lib/dpkg/statusは存在するか、まず確認して下さい。
>ファイルは存在します。(touchコマンドで作成致しましたので…)
しかし、内容は空です。
おかしくなる直前にどんな操作をしていましたでしょうか。
>ファイル削除や移動させたという事はしていません。historyで確認致しました。
ls -lad /var の結果です。↓
drwxr-xr-x 16 root root 4096 2009-06-08 02:26 /var
ls -lad /var/lib の結果です。↓
drwxr-xr-x 46 root root 4096 2009-06-14 23:54 /var/lib
ls -lad /var/lib/dpkg の結果です。↓
drwx-wx--x 2 root root 4096 2009-06-17 01:09 /var/lib/dpkg
sudo ls -la /var/lib/dpkg の結果です。↓
合計 8
drwx-wx--x 2 root root 4096 2009-06-17 01:09 .
drwxr-xr-x 46 root root 4096 2009-06-14 23:54 ..
-rw-r----- 1 root root 0 2009-06-18 23:56 lock
-rw-r----- 1 root root 0 2009-06-17 02:08 status
最初の状態ではstatusがあったはずなのですが、どこかに残っていませんか?
>findで探してみましたが見つかりません。探し方が悪いのかもしれませんが…
馬鹿な質問かもしれませんが「status」ファイルは必ず最初から存在するファイルなんですか?
statusファイルを削除した覚えがありません。(存在自体知りませんでした)
なのに、statusファイルがない。
難しいです。勉強しなければ…
オフライン
funatogawaさん、返信ありがとうございます。
『/var/lib/dpkg/statusを削除し、新たに作成した』でいいのですね。
>削除はしておりません。最初にエラーメッセージが表示され、安直にstatusファイルがないから
エラーが表示されたと思い作成のみ行いました。
ということは、statusファイルは最初から存在しなかった…?という事でしょうか、
/var/lib/dpkg/status-oldがあるか確認してください。
>確認はfindで行いましたが、ありませんでした。
aptシステムの再インストールをした方がよいのでは。
>再インストール方法をお伺いしてもよろしいでしょうか?
誠に申し訳ございません。Linux初心者で…勉強致します。
オフライン
こんばんは
/varディレクトリが作られた日付が2009年6月8日ですが、Ubuntu8.04をインストールした日付と考えていいですか。
もし、そうなら、Ubuntuの再インストールをお勧めします。その方が間違いありません。lockファイルもstatusファイルもないとは考えにくいのです。もう少し対策をだしてくれるようなレスポンスがあればよいのですが。
オフライン
statusファイルというのは、aptシステムが依存関係などをデータベースで蓄えます、その結果を元にdpkgにインストールやアンインストールを依頼するのですが、その時どういう変化があったかを記録しておくファイルです。ですから、dpkgにとってはかなり重要なファイルなのですが、aptシステムにとっては別管理なのでそれほどではありません。そこで、LiveCDを動かして、そのファイルシステムからUSBmemoryにstatus,status-oldをコピーして、ハードディスクの同じディレクトリにコピーする手はどうでしょう。
結局エラーでaptシステムが機能しないのですから、apt-getやaptitudeを使ってもう一度dpkgを再インストールするのは不可能ですので、他のシステムからコピーしてみるより手がありません。これでアップデート機能が回復できなければ再インストールしてください。
皆さんこの手はいかがですか。よい手があったらmoonwalkさんにアドバイスを!
オフライン
drwx-wx--x 2 root root 4096 2009-06-17 01:09 /var/lib/dpkg
も少しおかしいですね。デフォルトでは"rwxr-xr-x(755)"ではないかと思います。
root権限なら関係無い部分ですが。。
dpkg以下のファイルもごっそりなくなってしまっているようです。
statusの方にばかり目がいってしまっていましたが、他にもいろいろ足りなくなっています。
私の環境では以下のものがありました。
drwxr-xr-x 2 root root 12288 2009-06-13 14:26 alternatives
-rw-r--r-- 1 root root 2976529 2009-06-19 09:01 available
-rw-r--r-- 1 root root 2976529 2009-06-19 09:01 available-old
-rw-r--r-- 1 root root 8 2008-04-23 02:49 cmethopt
-rw-r--r-- 1 root root 2770 2009-06-03 23:23 diversions
-rw-r--r-- 1 root root 2698 2009-06-03 07:43 diversions-old
drwxr-xr-x 2 root root 503808 2009-06-19 09:01 info
-rw-r----- 1 root root 0 2009-06-19 09:01 lock
drwxr-xr-x 2 root root 4096 2008-02-13 10:50 parts
-rw-r--r-- 1 root root 112 2009-04-25 16:38 statoverride
-rw-r--r-- 1 root root 152 2009-01-01 22:56 statoverride-old
-rw-r--r-- 1 root root 3065398 2009-06-19 09:01 status
-rw-r--r-- 1 root root 3065862 2009-06-19 09:01 status-old
drwxr-xr-x 2 root root 4096 2009-06-19 09:01 triggers
drwxr-xr-x 2 root root 4096 2009-06-19 09:01 updates
これらのひとつひとつの役割は理解していませんが、moonwalkさんの現在の環境から正常な状態に戻すのは困難だと考えます。
差し支えなければfunatogawaさんが書かれているように、再インストールしてしまった方が早いかも。。
再インストールするのに支障がある場合は、他の環境からdpkg以下をごっそりコピって持ってくる手もなくはないですが、
実際の環境にインストールされているパッケージ群と矛盾がでるため、しばらくの間は面倒が続くことになると思います。
/etcや/homeのバックアップだけとっておけば、再インストールもそれほど手間では無いと思いますので、こちらの方をお勧めしたいです。
オフライン
こんにちは
moonwalkさんのdpkgディレクトリにはファイルが少なすぎですね。
本来から言えば/var以下は一時記憶の保存場所となっているので、あまりこだわる必要はないのでしょうが、積極的にデータを受け渡ししているプログラムもあるようです。
私の8.04環境ですと(普段は使っていないマシン)、ほとんどhmatsueさんと同じです。
funa@funa-desktop:~$ ls -la /var/lib/dpkg 合計 4960 drwxr-xr-x 7 root root 4096 2009-06-19 11:00 . drwxr-xr-x 53 root root 4096 2009-06-07 03:48 .. drwxr-xr-x 2 root root 4096 2009-06-16 00:19 alternatives -rw-r--r-- 1 root root 1161000 2009-06-19 11:00 available -rw-r--r-- 1 root root 1161000 2009-06-19 11:00 available-old -rw-r--r-- 1 root root 8 2009-01-20 19:01 cmethopt -rw-r--r-- 1 root root 1086 2009-05-24 02:48 diversions -rw-r--r-- 1 root root 965 2009-05-24 02:48 diversions-old drwxr-xr-x 2 root root 233472 2009-06-19 11:00 info -rw-r----- 1 root root 0 2009-06-19 11:00 lock drwxr-xr-x 2 root root 4096 2008-02-13 10:50 parts -rw-r--r-- 1 root root 65 2009-01-20 19:15 statoverride -rw-r--r-- 1 root root 1226234 2009-06-19 11:00 status -rw-r--r-- 1 root root 1226275 2009-06-19 11:00 status-old drwxr-xr-x 2 root root 4096 2009-06-18 21:27 triggers drwxr-xr-x 2 root root 4096 2009-06-19 11:00 updates
行の最初に"d"が付いているのが"ディレクトリ”、"-"が"ファイル"です。
やはり、/home以下を別のメディア(外付けのUSBHDDなど)にコピーして、再インストールをお勧めします。
*注意:再インストール後、出し入れしたソフトがあったり、環境変数を変えたり、その他システムを変更した場合は、必ずメモに残す習慣をつけましょう。再び再インストールしたり、次のバージョンにするときにクリアインストールしなければうまくいかないときに役立ちます(例8.04→8.10)。
原因究明まで至らなくて申し訳ありません。
オフライン
hunatogawaさん、hmatsueさん返信ありがとうございます。
再インストール行いました。ubuntu-8.04です。
また振り出しに戻ってしまうのですが、apt-get updeteを行った際に下記のエラーが表示されます。
E: ロックファイル /var/lib/apt/lists/lock をオープンできません - open (13 Permission denied)
E: list ディレクトリをロックできません
lockファイルがないのかと思い検索してみた所、存在しました。
入力コマンド→ find /var/lib/dpkg/lock
結果→ /var/lib/dpkg/lock
この場合、#4のsudo chmod 640 /var/lib/dpkg/lock と sudo chown root:root /var/lib/dpkg/lockで解決できますでしょうか?
デジャブの質問で誠に申し訳御座いません。
今回は、statusファイルがあります。
ls -la /var/lib/dpkg/
合計 4688
drwxr-xr-x 7 root root 4096 2008-06-07 23:19 .
drwxr-xr-x 46 root root 4096 2008-05-10 15:26 ..
drwxr-xr-x 2 root root 4096 2009-06-20 04:13 alternatives
-rw-r--r-- 1 root root 1103278 2008-06-07 23:19 available
-rw-r--r-- 1 root root 1103278 2008-06-07 23:19 available-old
-rw-r--r-- 1 root root 8 2008-04-23 02:49 cmethopt
-rw-r--r-- 1 root root 98 2008-05-10 15:06 diversions
drwxr-xr-x 2 root root 229376 2008-06-07 23:19 info
-rw-r----- 1 root root 0 2009-06-20 04:24 lock
drwxr-xr-x 2 root root 4096 2008-02-13 10:50 parts
-rw-r--r-- 1 root root 65 2008-04-23 03:01 statoverride
-rw-r--r-- 1 root root 1147948 2008-06-07 23:19 status
-rw-r--r-- 1 root root 1148653 2008-06-07 23:19 status-old
drwxr-xr-x 2 root root 4096 2008-06-07 22:28 triggers
drwxr-xr-x 2 root root 4096 2008-06-07 23:19 updates
オフライン
今回はdpkg以下の内容は正常のようです。
ですので、あとはエラーメッセージ、
> E: ロックファイル /var/lib/apt/lists/lock をオープンできません - open (13 Permission denied)
> E: list ディレクトリをロックできません
だけが問題となります。
エラーではPermission denied、つまり権限がないと言われています。
一番ありがちなのは、root権限ではなく、一般ユーザ権限でapt-get updateしていることだと思われますが、
そのあたりは大丈夫でしょうか。
具体的には、
$ sudo apt-get update
$ sudo apt-get upgrade
で最新の状態に更新されるのではないかと思います。
ちなみにlockファイルは存在し、モードは640、所有者はroot、グループもrootになっているので、#4の操作をしても
現在となにも変わりません。
一段落ついたら、
$ man sudo
$ man touch
$ man chmod
$ man chown
して各コマンドの意味も調べていただければ、今後の参考になるかと思います。
オフライン
hmatsueさん、説明して頂きありがとうございます。
無事にエラー出ずにapt-get update出来ました。馬鹿な質問ばかりでご迷惑をおかけしてしまい誠に申し訳ございません。
私は、実機をまったく触らずにLPICの学習を行い、level3まで取得しました。
一段落し、現在は実機を使いLinuxについて学習中です。
しかし、何をして良いのかまったくわかりません。資格は取得したが技術力が伴っていない為。
皆様は、Linux初心者時どのような学習を行い、知識を深めていきましたでしょうか?
苦労話等も聞けると参考になるので聞かせてください。お願い致します。
私の学習方法では、サイトに記載されているコマンドを打つ。参考書【基礎からのLInux】を読みながら学習を行うです。
オフライン
ご参考になるか判りませんが。。
私は本業が回路屋で、Linuxは趣味で使っているだけでちゃんと勉強したことはありません。
学生のころに主にLaTeXとC言語を目的にFreeBSDを使うようになりました。
最初のころは、なんやかやでシステムを破壊してしまったりして、そこから復旧させる過程で
いろいろ調べて覚えた気がします。その後Linuxに乗り換えましたが基礎は変わらないです。
あとは、fjをぼーと眺めていましたね。他の人のやりとりを見ていて、知識を吸収しました。
まずは、実用的なことに使うことを考えてみてはいかがでしょうか。
なにか目的を持って使うと、いろいろ自動でやりたいことがでてきたり、不便を感じたりする
こともでてくるのではないかと思います。そうすれば、少しずつ興味を持ったところから知識
を増やしていけるかと思います。
オフライン