Как восстановить удаленный каталог «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)

Что мне теперь делать?


Вы пытались скопировать (не пытайтесь их удалить) файлы с Live CD Ubuntu в саму систему как суперпользователь ??
Доминик Хейс

Ответы:


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

Теперь давайте сделаем глубокий вдох. Уф. Сделайте ls -l /var/lib/dpkgи сравните с приведенным выше списком. Если какого-то -oldфайла нет, не волнуйтесь, он будет там завтра.


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

@Sambit Невозможно. Можете ли вы отредактировать свой вопрос и добавить полный вывод?
Брайам

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

Та же проблема здесь, Ubuntu пытается установить /usr/local/вместо /var/lib/dpkg. Как это сделать /var/lib/dpkg?
Bagustris

@bagustris загрузите пакет из репозиториев Ubuntu.
Брайам

2

dpkgПакет Well (система управления пакетами Debian) предоставляет низкоуровневую инфраструктуру для обработки установки и удаления пакетов программного обеспечения Debian. Поэтому удаление не было хорошей идеей, и вы можете вернуть его обратно,

Скачивание файла с помощью wget:

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

Распакуйте его в папку ххх.

cd xxx
./configure
make
sudo make install

надеюсь, это сработает.


Я прошел через эти шаги и успешно установлен. но опять я получаю ту же проблему.
Самбит

./configure не удалось или был успешным ??
Sukupa91

Уже перезапущен, и я получаю ту же ошибку, как указано в моем вопросе. Также не работают встроенные программы, такие как «Ubuntu Software Center», «Менеджер обновлений».
Самбит

эй, я обновил первые команды wget, попробуйте запустить ту же процедуру с помощью команды wget
Sukupa91

1
получая ошибку, cp: not 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.