Восстановление поврежденной RPM-базы
Версия от 13:36, 8 мая 2021; Petr-akhlamov (обсуждение | вклад) (Новая страница: «Иногда, например из-за зависания компьютера или отключения электричества при работе RPM с…»)
Иногда, например из-за зависания компьютера или отключения электричества при работе RPM с пакетами (установка, удаление, обновление и пр.) база данных, содержащая информацию об установленных пакетах повреждается и пакетный менеджер уже не сможет работать корректно, т.е. вообще не заработает и будет выдавать ошибку о поврежденной БД.
Типа такой:
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery error: rpmdb: BDB1581 File handles still open at environment close error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.001 error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.002 error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.003 error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Packages error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery error: db5 error(-30973) from dbenv->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
Несмотря на критичность, данная проблема решается довольно просто.
Я опишу тот вариант, который у меня заработал в ALT Linux.
Первым делом мы очищаем старую базу данных:
# rm -f /var/lib/rpm/__db*
А после, генерируем новую заново:
# rpm -vv --rebuilddb
После генерации попробуйте получить список пакетов:
# rpm -qa
Должен вывестись список установленных пакетов.