Як відновити видалений каталог "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 Live в саму систему як Superuser ??
Домінік Хейс

Відповіді:


60

root + 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

Якщо все "добре", тоді також відновіть базові файли:

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

Тепер спробуйте оновити список пакунків тощо:

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

Тепер зробимо глибокий вдих. Phew. Зробіть ls -l /var/lib/dpkgі порівняйте з вищенаведеним списком. Якщо якогось -oldфайлу немає, не хвилюйтесь, він буде там завтра.


1
Дякуємо за відповідь Я виконував кроки, як ви згадали тут, але виконуючи sudo dpkg -i dpkg * .deb , я отримую помилку як dpkg: error: не вдалося відкрити файл інформації про пакет `/ usr / local / var / lib / dpkg / status 'для читання: Немає такого файлу чи каталогу
Sambit

@Sambit неможливий. Чи можете ви відредагувати своє запитання та додати повний результат?
Брайам

@Sambit ls: cannot access /usr/local/var/lib/dpkg/status: No such file or directory- це єдине, що я отримую. /usr/localне місце для встановлення файлів dpkg.
Брайам

Тут же проблема, що Ubuntu намагається встановити /usr/local/замість in /var/lib/dpkg. Як зробити так, щоб це вказувало /var/lib/dpkg?
bagustris

@bagustris завантажте пакунок із сховищ Ubuntu.
Брайам

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

сподіваюся, що це спрацює.


Я пройшов ці кроки і успішно встановив. але знову я отримую ту саму проблему.
Sambit

не ./configure не вдалося або було успішним ??
Sukupa91

Вже перезапущено, і я отримую ту ж помилку, яку згадував у своєму запитанні. Також вбудовані програми, такі як "Центр програмного забезпечення Ubuntu", "Менеджер оновлень", також не працюють.
Самбіт

ей, я оновив перші команди wget, спробуйте цю ж процедуру, почніть з команди wget
Sukupa91

1
помилка отримання, cp: не може stat `/ var / lib / dpkg / status-old ': такого файлу чи каталогу немає . Я зіткнувся з цією проблемою, оскільки каталог "dpkg" не існує в моїй системі.
Самбіт

1

Відновіть систему із резервного копіювання. Ви зробили резервні копії правильно? Резервне копіювання системи та даних має вирішальне значення для вирішення таких несподіваних ситуацій, як ця (помилка користувача) та апаратних збоїв. Якщо вам не вдалося створити резервні копії, такі як обговорювалося тут, ви можете спробувати відновити дані.

Надалі я пропоную регулярно створювати резервні копії, щоб уникнути катастрофічних втрат даних. І я сумніваюся, ви забудете це, як @Braiam сказав " root + 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.