Před několika dny jeden z našich zákazníků oznámil, že nemůže nainstalovat žádné balíčky pomocí příkazu yum pomocí CentOS Linux. Po prozkoumání jsem zjistil, že databáze RPM byla poškozená. Toto je velmi častý problém na serverech CentOS a RHEL.
Servery CentOS a RHEL používají rpm ke správě instalace, odstraňování a upgradů balíčků. Pokud je databáze rpm nějakým způsobem poškozena, ostatní systémové nástroje, které se spoléhají na RPM, jako je Yum/Dnf, přestanou fungovat.
Jak mohu znovu sestavit databázi RPM na CentOS nebo RHEL?
Nainstalujte některé požadavky, abyste zajistili, že můžete opravit databázi RPM:
yum install db4-utils yum-utils -y
Vždy se ujistěte, že máte zálohu své aktuální databáze RPM
rsync -avpr /var/lib/rpm /var/lib/rpm.bak
Obnova poškozené databáze RPM:2 řešení
1) Odeberte soubory databáze RPM a znovu vytvořte:
rm /var/lib/__db* -fv rpm --rebuilddb
Příkaz rpm –rebuilddb znovu sestaví databázi RPM na základě souboru /var/lib/rpm/Packages. Soubory „Packages“ jsou vyžadovány, aby bylo možné znovu vytvořit databázi RPM. Na pomalých serverech může provedení tohoto příkazu nějakou dobu trvat.
Zkuste nyní použít yum normall, pokud to váš problém nevyřeší, přejděte ke kroku 2:
2) Znovu načíst balíčky RPM
Další příjemnou strategií pro obnovu poškozené databáze RPM je použití nástrojů db_dump a db_load. V níže uvedeném příkladu použijeme db_dump k výpisu souboru Packages a poté bude db_load použit k opětovnému načtení souboru Packages. Toto je alternativní způsob, jak vyřešit problémy s RPM Db:
cd /var/lib/rpmdb mv Packages Packages.bak db_dump Packages.bak | db_load Packages
Jako další kontrola zdravého rozumu se zeptejte na všechna záhlaví v DB
rpm -qa
Nakonec znovu vytvořte databázi RPM:
rpm --rebuilddb
V tomto okamžiku byste měli mít databázi RPM opět plně funkční. Dejte nám prosím vědět, pokud vám tyto dva kroky nevyhovují, nebo pokud znáte jiná řešení, o která se s námi můžete podělit.
Další čtení
- Znovu vytvořte databázi RPM od rpm.org:http://www.rpm.org/max-rpm/ch-rpm-miscellania.html
- Přebudování databáze RPM od:fedoraproject.org: http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch04s05s02.html
- RPM DB Recovery na RHEL, Daniel Berrange: http://people.redhat.com/berrange/notes/rpmrecovery.html
Přestavba poškozené databáze RPM byla naposledy upravena:7. února 2017 Estebanem Borgesem