Если упала база RPM

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

Иногда, в силу каких-то магических причин база RPM падает. Ничего не установить, не обновиться, не удалить. Обычно признаки падения базы RPM примерно такие:

rpmdb: BDB0113 Thread/process 31581/140478801409856 failed: BDB1507
Thread died in Berkeley DB library
error: db_init:db3.c:1098: dbenv->failchk(-30973): BDB0087
DB_RUNRECOVERY: Fatal error, run database recovery
Re-opening dbenv with DB_RECOVER ...
BDB2526 Finding last valid log LSN: file: 25 offset 4260
recovery 13% completeBDB1514 Recovery starting from [25][28]
recovery 80% completeBDB1518 Recovery complete at Sun Feb  2 17:30:34 2014
BDB1519 Maximum transaction ID 8000830c recovery checkpoint [25][4260]
.
recovery succeeded.
rpmdb: BDB2506 file /var/lib/rpm/Packages has LSN 25/7320425, past end
of log at 25/4352
rpmdb: BDB2507 Commonly caused by moving a database from one database
environment
rpmdb: BDB2508 to another without clearing the database LSNs, or by
removing all of
rpmdb: BDB2509 the log files from a database environment
rpmdb: BDB0641 __db_meta_setup: /var/lib/rpm/Packages: unexpected file
type or format
error: cannot open Packages(0) index: Недопустимый аргумент(22)
        DB: Berkeley DB 5.2.42: (February 29, 2012)
error: не могу открыть базу данных Packages в
не удаётся открыть базу данных RPM

Если это ваш случай, тогда есть несколько вариантов восстановления:

1 способ

Удаляем __db.*

rm -f /var/lib/rpm/__db.*

Запускаем rpmdbchk:

/usr/lib/rpm/bin/rpmdbchk

Если не поможет, то:

2 способ

С помощью db52_recover

db52_recover -vh /var/lib/rpm

Если не поможет, что:

3 способ

С помощью perl

perl -MURPM -e 'URPM::DB::convert("/", "btree", 1, 1)'