Новелла девяносто восьмая, посвящённая восстановлению базы данных rpm-пакетов

Повреждение базы данных rpm-пакетов — штука хотя и не смертельная, но неприятная. И потому следует заранее подумать о её восстановлении.

Проще всего это сделать из резервного архива. Разумеется, заблаговременно созданного с помощью, например, архиватора tar и любого компрессора, например, gzip:

$ tar cvfz path2backup/rpmdb.tar.gz /var/lib/rpm

Таким образом, гарантированно сохраняется всё содержимое каталога. Причём это можно сделать от лица обычного пользователя, хотя для восстановления базы их архива, естественно, потребуются права администратора.

Есть и возможность просто перестроить повреждённую базу следующей командой (с правами администратора):

# rpm --rebuilddb

Она регенерируетповреждённые файлы базы из описания в файле Packages, а в случае отсутствия повреждений просто удалит неиспользуемые записи. Разумеется, есои сам файл описания не был повреждён. Для предотвращения чего неплохо создать его резервную копию командой db_dump, из которой он может быть восстановлен с помощью db_load. Впрочем, файл описания резервируется и автоматически, в чём легко убедиться с помощью команды

# ls /var/adm/backup/rpmdb/
Packages-20120517.gz  rpmdb_recent_md5

данной от лица  администратора — доступ в каталог  /var/adm/backup/ для обычного пользователя закрыт.

Наконец, на самый крайний случай, командой

# rpm --initdb

можно создать новую, пустую, базу данных и начать жизнь «с чистого листа». Разумеется, при этом информация о всех ранее установленных пакетах будет утрачена.

Впрочем, мне ни разу не выпало счастье утратить или повредить базу данных rpm-пакетов ни в одном из пользованных мной дистрибутивов, применяющих этот формат. Так что всё, написанное выше изложено с чужих слов.


Назад | К содержанию |