Сломанная RPMDB и её исправление

Как то при обновлении пакетов на сервере получил не очень приятное сообщение

# yum check-update
rpmdb: Thread/process 25837/139766049310464 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 -  (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

Error: rpmdb open failed

Сперва не понял что это всё означает. Альтернативная проверка дала тот же результат

# rpm -qa
rpmdb: Thread/process 25837/139766049310464 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 -  (-30974)
error: cannot open Packages database in /var/lib/rpm
rpmdb: Thread/process 25837/139766049310464 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages database in /var/lib/rpm

Всё таки не хочет обновляться так как система не может получить список пакетов. Хочет что бы я сделал восстановление базы. Проверяем что в указанном каталоге

# ls -l /var/lib/rpm
total 46592
-rw-r--r--. 1 root root  1548288 Jul 25 13:56 Basenames
-rw-r--r--. 1 root root    12288 Jul 25 13:56 Conflictname
-rw-r--r--  1 root root    73728 Jul 25 14:06 __db.001
-rw-r--r--  1 root root   229376 Jul 25 14:06 __db.002
-rw-r--r--  1 root root  1318912 Jul 25 14:06 __db.003
-rw-r--r--  1 root root   753664 Jul 25 14:00 __db.004
-rw-r--r--. 1 root root   544768 Jul 25 13:56 Dirnames
-rw-r--r--. 1 root root  2609152 Jul 25 13:56 Filedigests
-rw-r--r--. 1 root root    12288 Jul 25 13:56 Group
-rw-r--r--. 1 root root     8192 Jul 25 13:56 Installtid
-rw-r--r--. 1 root root    24576 Jul 25 13:56 Name
-rw-r--r--. 1 root root    12288 Jul 25 13:56 Obsoletename
-rw-r--r--. 1 root root 38973440 Jul 25 13:56 Packages
-rw-r--r--. 1 root root  1339392 Jul 25 13:56 Providename
-rw-r--r--. 1 root root  1036288 Jul 25 13:56 Provideversion
-rw-r--r--. 1 root root    12288 May  5 23:02 Pubkeys
-rw-r--r--. 1 root root   192512 Jul 25 13:56 Requirename
-rw-r--r--. 1 root root    98304 Jul 25 13:56 Requireversion
-rw-r--r--. 1 root root    45056 Jul 25 13:56 Sha1header
-rw-r--r--. 1 root root    24576 Jul 25 13:56 Sigmd5
-rw-r--r--. 1 root root    12288 May  5 22:20 Triggername

Вроде всё на месте. Хорошо, раз требуется восстановление базы то запустим его

# rpm --rebuilddb
rpmdb: Thread/process 25837/139766049310464 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 -  (-30974)

Ага, не тут то было. База сломалась сильнее, ем ожидалось. Тогда просто удалим базу и пересоздадим снова

# rm -f /var/lib/rpm/__*
# rpm --rebuilddb

И проверим

# rpm -qa | grep yum
yum-3.2.29-73.el6.centos.noarch
yum-plugin-fastestmirror-1.1.30-37.el6.noarch
yum-metadata-parser-1.1.2-16.el6.x86_64
# rpm -qa | wc -l
340

Замечательно! База пакетов актуальная и можно выполнять обновление.

Добавить комментарий