削除された「dpkg」ディレクトリを回復する方法は?


30

残念ながら、ロックを解除するときにdpkgディレクトリを削除しました。間違って入力した

root@sam:~$ rm -r /var/lib/dpkg

パッケージをインストール/アンインストールしようとすると、次のエラーが表示されます。

E: Could not open lock file /var/lib/dpkg/lock - open (2: No such file or directory)

私は今どうすればいい?


あなたは試してみましたコピースーパーユーザーとしてシステム自体に(それらを削除しないようにしてください)UbuntuのライブCDからファイルを?
ドミニクヘイズ

回答:


60

ルート+ rm+ -r=災害

それで、あなたは破滅に何を非難しましたか?

ls -l /var/lib/dpkg/
total 9964
drwxr-xr-x 2 root root    4096 nov 28 11:18 alternatives
-rw-r--r-- 1 root root      11 sep 18 14:08 arch
-rw-r--r-- 1 root root 2573807 nov 28 11:18 available
-rw-r--r-- 1 root root 2561322 nov 28 10:25 available-old
-rw-r--r-- 1 root root       8 abr 24  2013 cmethopt
-rw-r--r-- 1 root root     538 sep 25 17:24 diversions
-rw-r--r-- 1 root root     457 sep 25 17:24 diversions-old
drwxr-xr-x 2 root root  483328 nov 28 11:17 info
-rw-r----- 1 root root       0 nov 28 11:18 lock
drwxr-xr-x 2 root root    4096 mar 22  2013 parts
-rw-r--r-- 1 root root     135 abr 24  2013 statoverride
-rw-r--r-- 1 root root 2269113 nov 28 11:18 status
-rw-r--r-- 1 root root 2268870 nov 28 11:18 status-old
drwxr-xr-x 2 root root    4096 nov 28 11:18 triggers
drwxr-xr-x 2 root root    4096 nov 28 11:18 updates

5つのディレクトリ、ステータスファイルなどを削除したので、問題を修正してみましょう。まず、ディレクトリを作成します。

sudo mkdir -p /var/lib/dpkg/{alternatives,info,parts,triggers,updates}

いくつかのバックアップを回復します。

sudo cp /var/backups/dpkg.status.0 /var/lib/dpkg/status

それでは、dpkgが機能しているかどうかを見てみましょう(祈り始めます)。

apt-get download dpkg
sudo dpkg -i dpkg*.deb

すべてが「OK」の場合は、ベースファイルも修復します。

apt-get download base-files
sudo dpkg -i base-files*.deb

次に、パッケージリストなどを更新してみてください。

dpkg --audit
sudo apt-get update
sudo apt-get check

さあ、深呼吸しましょう。ふう。ls -l /var/lib/dpkg上記のリストと比較してください。一部の-oldファイルが存在しない場合でも、明日そこに存在することを心配しないでください。


1
回答ありがとうございます。ここで述べた手順に従いましたが、sudo dpkg -i dpkg * .debを実行中に、dpkg
Sambit

@Sambitインポッシブル。質問を編集して完全な出力を追加できますか?
ブライアム

@Sambit ls: cannot access /usr/local/var/lib/dpkg/status: No such file or directoryは私が得る唯一のものです。/usr/localdpkgファイルをインストールする場所ではありません。
Braiam

ここでも同じ問題があり、Ubuntuはの/usr/local/代わりにをインストールしようとしてい /var/lib/dpkgます。それを指すようにする方法は/var/lib/dpkg
バグストリス

@bagustrisは、Ubuntuリポジトリからパッケージをダウンロードします。
Braiam

2

まあ dpkg(Debianパッケージ管理システム)パッケージは、Debianソフトウェアパッケージのインストールと削除を処理するための低レベルのインフラストラクチャを提供します。

を使用してファイルをダウンロードするwget

wget https://launchpad.net/ubuntu/+archive/primary/+files/dpkg_1.16.1.2ubuntu7.2.tar.bz2

xxxフォルダーに解凍します。

cd xxx
./configure
make
sudo make install

うまくいくことを願っています。


これらの手順を実行し、正常にインストールしました。しかし、再び私は同じ問題を抱えています。
サンビット

./configureが失敗したか成功しましたか?
スクパ91

すでに再起動し、質問で述べたのと同じエラーが表示されます。また、「Ubuntu Software Centre」、「Update Manager」などの組み込みソフトウェアも機能していません。
サンビット

ちょっと私はwget最初のコマンドを更新しました、wgetコマンドで開始する同じ手順を試してください
Sukupa91

1
エラーが発生しました、cp: `/ var / lib / dpkg / status-old 'を統計できません:そのようなファイルまたはディレクトリはありません。「dpkg」ディレクトリがシステムに存在しないため、これらの問題に直面しています。
サンビット

1

バックアップからシステムを回復します。バックアップを作成しましたか?システム(データ)のバックアップは、これ(ユーザーエラー)やハードウェア障害などの予期しない状況に対処するために重要です。ここで説明しようなバックアップの作成に失敗し場合は、データの回復を試みることができます

将来、壊滅的なデータ損失を避けるために定期的にバックアップすることをお勧めします。そして、@ Braiamが「ルート+ rm + -r =災害」と言ったように、あなたがそれを忘れることを疑うでしょう


-2

ちょうどあなたがファイルを回復することができ、下記の手順、少なくともapt-getもしくはdpkg動作します。

sudo cp /var/backups/dpkg.status.0  /var/lib/dpkg/

sudo mv /var/backups/dpkg.status.0  /var/backups/status

sudo mkdir /var/lib/dpkg/updates

このテストの後、動作するかどうか。

sudo apt-get install {Package-name}

sudo dpkg -i {package_name}

うまくいったことを願っています。以下にコメントしない場合。で遊んでsudo + rm -rfいる間、細心の注意を払ってください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.