Wie gelöschte "dpkg" -Verzeichnis wiederherstellen?


30

Leider habe ich beim Entfernen der Sperre das dpkg- Verzeichnis gelöscht . Ich habe versehentlich getippt

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

Wenn ich jetzt versuche, Pakete zu installieren / deinstallieren, wird folgender Fehler angezeigt.

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

Was sollte ich jetzt tun?


Haben Sie versucht , die Dateien von einer Ubuntu Live-CD als Superuser in das System selbst zu kopieren (versuchen Sie, sie nicht zu löschen)?
Dominic Hayes

Antworten:


60

root + rm+ -r= Katastrophe

Was haben Sie zum Verderben verurteilt?

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

Sie haben 5 Verzeichnisse, die Statusdatei usw. entfernt. Versuchen wir also, das Problem zu beheben. Erstellen Sie zuerst das Verzeichnis:

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

Stellen Sie einige Backups wieder her:

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

Nun wollen wir mal sehen, ob Ihr dpkg funktioniert (fangen Sie an zu beten):

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

Wenn alles in Ordnung ist, reparieren Sie auch Ihre Basisdateien:

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

Versuchen Sie nun, Ihre Paketliste usw. zu aktualisieren:

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

Jetzt lass uns tief durchatmen. Puh. Tun ls -l /var/lib/dpkgund mit der obigen Liste vergleichen. Wenn eine -oldDatei nicht vorhanden ist, ist sie morgen verfügbar.


1
Danke für die Antwort. Ich habe die hier beschriebenen Schritte ausgeführt, aber während ich sudo dpkg -i dpkg * .deb ausführte , wurde die Fehlermeldung dpkg ausgegeben: Fehler: Fehler beim Öffnen der Paketinformationsdatei `/ usr / local / var / lib / dpkg / status 'Zum Lesen: Keine solche Datei oder Verzeichnis
Sambit

@Sambit Unmöglich. Können Sie Ihre Frage bearbeiten und die gesamte Ausgabe hinzufügen?
Braiam

@Sambit ls: cannot access /usr/local/var/lib/dpkg/status: No such file or directoryist das einzige, was ich bekomme. /usr/localist kein Ort, um dpkg-Dateien zu installieren.
Braiam

Gleiches Problem hier, Ubuntu versucht, in /usr/local/statt in zu installieren /var/lib/dpkg. Wie soll ich darauf hinweisen /var/lib/dpkg?
Bagustris

@bagustris lade das Paket von den Ubuntu-Repositories herunter.
Braiam

2

Nun, das dpkgPaket (Debian-Paketverwaltungssystem) bietet die Infrastruktur auf niedriger Ebene für die Installation und Deinstallation von Debian-Software-Paketen. Das Entfernen war also keine gute Idee, und Sie können es rückgängig machen, indem Sie

Herunterladen der Datei mit wget:

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

Entpacke es in den xxx Ordner.

cd xxx
./configure
make
sudo make install

hoffe es wird funktionieren.


Ich habe diese Schritte durchlaufen und erfolgreich installiert. aber wieder bekomme ich das gleiche problem.
Sambit

ist ./configure fehlgeschlagen oder war erfolgreich?
Sukupa91

Bereits neu gestartet und ich erhalte den gleichen Fehler wie in meiner Frage erwähnt. Auch eingebaute Software wie "Ubuntu Software Center", "Update Manager" funktionieren ebenfalls nicht.
Sambit

Hey, ich habe wget erste Befehle aktualisiert, versuchen Sie das gleiche Verfahren mit wget Befehl beginnen
Sukupa91

1
Fehler wird angezeigt , cp: kann nicht statieren `/ var / lib / dpkg / status-old ': Keine solche Datei oder kein solches Verzeichnis . Ich stehe vor diesem Problem, weil das Verzeichnis "dpkg" in meinem System nicht vorhanden ist.
Sambit

1

Stellen Sie Ihr System von der Sicherung wieder her. Sie haben Backups richtig gemacht? Das Sichern Ihres Systems und Ihrer Daten ist wichtig, um mit unerwarteten Situationen wie dieser (Benutzerfehler) und Hardwarefehlern fertig zu werden. Wenn Sie keine Sicherungen wie hier beschrieben erstellt haben , können Sie versuchen, die Daten wiederherzustellen.

Ich schlage vor, in Zukunft regelmäßig zu sichern , um einen katastrophalen Datenverlust zu vermeiden. Und ich bezweifle, dass Sie das vergessen werden, als @Braiam sagte " root + rm + -r = disaster "


-2

Befolgen Sie einfach die folgenden Schritte, um sicherzugehen, dass Sie die Dateien wiederherstellen können, zumindest die apt-getoder dpkgfunktionieren würden.

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

Nach diesem Test, ob es funktionieren würde oder nicht.

sudo apt-get install {Package-name}

sudo dpkg -i {package_name}

Hoffe es hat funktioniert. Wenn nicht, Kommentar unten. Denken Sie daran, seien Sie beim Spielen äußerst vorsichtig sudo + rm -rf.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.