Свежий баг. Редкий, но встречается. У меня случился на Oracle Linux.
Симптомы только косвенные. Началась утечка CPU на виртуальной машине. Прошло несколько дней, гипервизор стал жаловаться на процессор:
Смотрю статистику использования CPU гипервизора и вижу такую картину:
Видно утечку, ищем виновника.
Графики производительности помогают легко найти виртуальную машину с утечкой CPU. Заглянем ей в консоль.
Опа, процессоры сожраны запросами к RPM. Выполняю:
rpm -qa
Запрос зависает, Ctrl + C со скрежетом убиваем текущий процесс. Заново делаю тот же запрос, вот и виновник торжества:
ошибка: rpmdb: BDB0113 Thread/process 9817/139781811808320 failed: BDB1507 Thread died in Berkley DB library ошибка: ошибка(5) db_30973 из dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery ошибка: невозможно открыть индекс Packages используя db5 - (-30973)
Быстрое решение проблемы
Пересоздаём базу RPM.
rm -f /var/lib/rpm/__db*
rpm -vv --rebuilddb
Немного терпения.
С облегчением.
Еще больше вариантов восстановления
http://wiki.rosalab.ru/ru/index.php/Если_упала_база_RPM
-
rm -f /var/lib/rpm/__db.* /usr/lib/rpm/bin/rpmdbchk
-
db52_recover -vh /var/lib/rpm
-
perl -MURPM -e 'URPM::DB::convert("/", "btree", 1, 1)'
-
rm -f /var/lib/rpm/__db* rpm -vv --rebuilddb
-
urpmi.recover --list-safe # (найти стабильное состояние и откатить на нужное количество транзакций, обозначенных датами) urpmi.recover --transactions --rollback 3
-
# копируем из /var/log последний здоровый rpmpkgs в удобное место. cp /var/log/rpmpkgs /home/username cp /var/lib/rpm/ /var/lib/rpm-stored # чистим rm -f /var/lib/rpm/__db* rm -f /var/lib/rpm/Packages rm -f /var/lib/rpm/log/log* # создаём БД rpm -vv --rebuilddb # проверим urpmi wget,urpmi # скачаем все пакеты cat /home/username/rpmpkgs | xargs urpmi --no-install # поставим cat /home/username/rpmpkgs | xargs urpmi --justdb # или cat /home/username/rpmpkgs | xargs rpm -i -v --nodeps --noscripts --notriggers --justdb --excludepath /