Jak odzyskać usunięty katalog „dpkg”?

30

Niestety usunąłem katalog dpkg podczas usuwania blokady. Przez pomyłkę wpisałem

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

Teraz, gdy próbuję zainstalować / odinstalować pakiety, pokazuje mi następujący błąd.

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

Co mam teraz zrobić?

Sambit
źródło
Czy próbowałeś skopiować (Staraj się ich nie usuwać) pliki z Live CD Ubuntu do samego systemu jako Superuser?
Dominic Hayes,

Odpowiedzi:

60

root + rm + -r= katastrofa

Więc co skazałeś na zatracenie?

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

Usunąłeś 5 katalogów, plik statusu itp. Spróbujmy to naprawić. Najpierw utwórz katalog:

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

Odzyskaj niektóre kopie zapasowe:

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

Teraz zobaczmy, czy twój dpkg działa (zacznij się modlić):

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

Jeśli wszystko jest w porządku, napraw też pliki podstawowe:

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

Teraz spróbuj zaktualizować listę pakietów itp .:

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

A teraz weźmy głęboki oddech. Uff Zrób ls -l /var/lib/dpkgi porównaj z powyższą listą. Jeśli jakiś -oldplik nie jest obecny, nie martw się, będzie tam jutro.

Braiam
źródło
1
Dzięki za odpowiedź. Postępowałem zgodnie z instrukcjami, o których tu wspomniałeś, ale podczas wykonywania sudo dpkg -i dpkg * .deb pojawia się błąd jako dpkg: błąd: nie udało się otworzyć pliku informacji o pakiecie `/ usr / local / var / lib / dpkg / status 'do czytania: Brak takiego pliku lub katalogu
Sambit
@Sambit Impossible. Czy możesz edytować swoje pytanie i dodać pełny wynik?
Braiam
@Sambit ls: cannot access /usr/local/var/lib/dpkg/status: No such file or directoryjest jedyną rzeczą, jaką dostaję. /usr/localnie można instalować plików dpkg.
Braiam
Ten sam problem tutaj: Ubuntu próbuje zainstalować /usr/local/zamiast w /var/lib/dpkg. Jak to wskazać /var/lib/dpkg?
bagustris
@bagustris pobierz pakiet z repozytoriów Ubuntu.
Braiam
2

Dobrze dpkg(system zarządzania pakietami Debiana) Pakiet zapewnia infrastrukturę niskopoziomowe do obsługi instalację i usuwanie oprogramowania Debiana packages.So usunięcie go nie było dobrym pomysłem, a można to może wykonać kopię kroku

Pobieranie pliku przy użyciu wget:

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

Wyodrębnij go w folderze xxx.

cd xxx
./configure
make
sudo make install

mam nadzieję, że to zadziała.

Sukupa91
źródło
Przeszedłem przez te kroki i pomyślnie zainstalowałem. ale znowu mam ten sam problem.
Sambit
czy ./configure nie powiodło się lub powiodło się ??
Sukupa91
Już zrestartowałem i pojawia się ten sam błąd, jak wspomniano w moim pytaniu. Nie działają również wbudowane programy, takie jak „Centrum oprogramowania Ubuntu” i „Menedżer aktualizacji”.
Sambit
hej, zaktualizowałem pierwsze polecenia wget, spróbuj wykonać tę samą procedurę, zaczynając od polecenia wget
Sukupa91,
1
pojawia się błąd, cp: nie można stat `/ var / lib / dpkg / status-old ': Brak takiego pliku lub katalogu . Mam do czynienia z tym problemem, ponieważ katalog „dpkg” nie istnieje w moim systemie.
Sambit
1

Odzyskaj system z kopii zapasowej. Zrobiłeś kopie zapasowe, prawda? Tworzenie kopii zapasowej systemu i danych ma kluczowe znaczenie w przypadku nieoczekiwanych sytuacji, takich jak ta (błąd użytkownika) i awaria sprzętu. Jeśli nie udało się utworzyć kopii zapasowych, takich jak omówione tutaj , możesz spróbować odzyskać dane.

W przyszłości sugeruję regularne tworzenie kopii zapasowych, aby uniknąć katastrofalnej utraty danych. I wątpię, żebyś zapomniał, jak powiedział @Braiam „ root + rm + -r = katastrofa

Starszy Geek
źródło
-2

Wystarczy wykonać poniższe kroki, aby odzyskać pliki, przynajmniej apt-getlub dpkgdziałało.

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

Po tym teście, czy zadziała, czy nie.

sudo apt-get install {Package-name}

sudo dpkg -i {package_name}

Mam nadzieję, że zadziałało. Jeśli nie komentarz poniżej. Pamiętaj, zachowując szczególną ostrożność podczas zabawy sudo + rm -rf.

Srudeep PA
źródło