Назад | Перейти на главную страницу

Debian удалил / var / lib / dpkg / info /, есть ли способ сохранить систему?

Случайно удален / var / lib / dpkg / info /, теперь у меня проблемы с установкой / удалением пакетов, выдает сообщения об ошибках, потому что не могу найти информацию об установленных пакетах.

Есть ли способ спасти систему или нужно полностью переустановить debian? : /

Вы должны иметь возможность регенерировать каталог, используя что-то вроде этого:

for i in $(dpkg -l|awk '/^ii/ {print $2}')
do
    apt-get --reinstall -y install $i
done

Этот фрагмент должен переустановить каждый пакет, который вы уже установили. Это также обновит все. Если вы не хотите этого делать, вам придется расширить сценарий, чтобы установить конкретную версию, которую вы в настоящее время установили, что не гарантируется, поскольку эти пакеты могут больше не существовать в репозитории.

Дополнительная информация и немного другой подход: http://people.adams.edu/~cdmiller/posts/Ubuntu-dpkg-recovery/

РЕДАКТИРОВАТЬ: Важный совет из указанной выше статьи:

Некоторые пакеты по-прежнему не устанавливаются правильно, так как в / var / lib / dpkg отсутствует больше информации. В частности, пакет "ucf" важен для правильной установки ядра и, возможно, некоторых других.

Без /var/lib/dpkg/info/ucf.templates установка ядра вызывает эту ошибку:

failed to install/upgrade: User postinst hook script [/sbin/update-grub] exited with value 10

Установите ucf:

apt-get --reinstall install ucf

В этой статье описывается восстановление после полного удаления все из /var/lib/dpkg, поэтому этот дополнительный шаг может не относиться к вашей ситуации.

Что ж, этот день был как и любой другой, почему? потому что я столкнулся с проблемой, немного похожей, но на этот раз связанной только с некоторыми пакетами со следующим сообщением:

Log started: 2019-09-22  16:12:10
dpkg: unrecoverable fatal error, aborting:
 reading files list for package 'apt': Bad address
Log ended: 2019-09-22  16:12:10

То, как я решил это, было немного похоже, но с некоторыми отличиями, такими как:

Вместо того, чтобы переименовать весь каталог в «/ var / lib / dpkg / info /», я просто переместил файлы (имена пакетов), которые вызывали у меня проблемы, которые в данном случае были пакетом (-ами) «apt».

  • поэтому я сначала отфильтровал пакеты, связанные с шаблоном '^ apt':
mlazo@mlazo-pc:~$ dpkg -l|awk '/^ii  apt/ {print $2}'
apt
apt-config-icons
apt-config-icons-hidpi
apt-config-icons-large
apt-config-icons-large-hidpi
apt-transport-https
apt-utils
apt-xapian-index
aptdaemon
aptdaemon-data
  • Находясь в каталоге «/ var / lib / dpkg / info», я создал каталог и переместил файлы, соответствующие предыдущему списку:
cd /var/lib/dpkg/info
mdkir ../info_back
mv -v $(ls |grep -i "^apt") ../info_back/
  • После перемещения файлов я приступаю к процессу переустановки:
for x in  $(dpkg -l| awk '/^ii  apt/ {print $2}'); do apt-get install --reinstall ${x} -y ; done
  • Пока он обрабатывался, я проверял "/var/log/apt/term.log", получая следующие подтверждения:
mlazo@mlazo-pc:~$ tail -n 20000  /var/log/apt/term.log |grep -i "preparing to unpack .../apt"
Preparing to unpack .../apt-config-icons_0.12.0-3ubuntu1_all.deb ...
Preparing to unpack .../apt-config-icons-hidpi_0.12.0-3ubuntu1_all.deb ...
Preparing to unpack .../apt-config-icons-large_0.12.0-3ubuntu1_all.deb ...
Preparing to unpack .../apt-config-icons-large-hidpi_0.12.0-3ubuntu1_all.deb ...
Preparing to unpack .../apt-transport-https_1.6.12_all.deb ...
Preparing to unpack .../apt-utils_1.6.12_amd64.deb ...
Preparing to unpack .../apt-xapian-index_0.47ubuntu13_all.deb ...
Preparing to unpack .../aptdaemon_1.1.1+bzr982-0ubuntu19.1_all.deb ...
Preparing to unpack .../aptdaemon-data_1.1.1+bzr982-0ubuntu19.1_all.deb ...

  • После завершения процесса переустановки я приступаю к выполнению процесса обновления, получая успешный результат:
root@mlazo-pc:/var/lib/dpkg/info# apt-get upgrade
..
..
..
Processing triggers for initramfs-tools (0.130ubuntu3.8) ...
update-initramfs: Generating /boot/initrd.img-5.0.0-25-generic
Processing triggers for libvlc-bin:amd64 (3.0.8-0ubuntu18.04.1) ...

С шагами, которые я выполнил ранее, он был выполнен с интервалом в 30 минут, может быть, чем за 4 часа.

Надеюсь, предыдущие шаги могут быть кому-то полезны.

С уважением,

Мануэль Лазо