Восстановление поврежденной RPM-базы

Материал из ALT Linux Wiki
Перейти к: навигация, поиск

Иногда, например из-за зависания компьютера или отключения электричества при работе 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

Должен вывестись список установленных пакетов.

Источник-1, Источник-2