GNU/Linux >> Znalost Linux >  >> Cent OS

Jak se zotavit z poškozené databáze RPM (obnovení databáze RPM)

Proč dochází k poškození databáze otáček za minutu

Důvodů, které mohou vést k poškození databáze rpm, může být více. Nelze přesně určit jednu RCA, protože kvůli omezením neexistuje žádný mechanismus pro sledování poškození databáze rpm.

– Databáze rpm se dotazuje pokaždé, když administrátor/nějaký proces spustí jakýkoli příkaz rpm.
– I během transakcí yum se databáze rpm výrazně změní.
– Takové poškození může způsobit i malý ukazatel.
– Pokud je LD_LIBRARY_PATH nastavena na nějakou hodnotu, poškodí se i databáze rpm.
– Pokud je nainstalován jakýkoli balíček třetí strany, který způsobuje zbytečné změny v databázi rpm.
– K takovému poškození mohou vést i neúplné transakce.
– V případě oddílu /var umístěného na svazcích SAN.

Celkově lze tedy u takového poškození databáze rpm zvážit mnoho faktorů. Pokud se databáze RPM často poškozuje, doporučuje se často zálohovat databázi RPM pomocí cronu.

Opravit databázi RPM

Nástroj RPM používá vlastní implementaci vlastní databáze, která obsahuje informace. Někdy může dojít k poškození databáze; příznaky zahrnují tvrzení, že nainstalovaný RPM balíček chybí; nebo pokusy o aktualizaci RPM jednoduše přestanou fungovat. Pokusy o dotaz (rpm -q) některé balíčky mohou selhat s níže uvedenou chybou.

rpmdb: /var/lib/rpm/Packages: unexpected file type or format  
error: cannot open Packages index using db3 - Invalid argument (22)

Pokud vaše databáze RPM nereaguje nebo je poškozená, můžete se ji pokusit opravit pomocí těchto příkazů. Poznámka:Není zaručeno, že tento proces bude fungovat. Pro tyto kroky musíte být přihlášeni s oprávněním superuživatele (neboli „root“). Příkazy lze zkopírovat a vložit přímo do kořenového okna terminálu.

1. Ujistěte se, že ve vašem systému nezůstaly spuštěny žádné procesy RPM. K jejich identifikaci použijte příkaz ps. Použijte příkaz kill k ukončení všech nalezených „rpm“ procesů; může být nutné „kill -9“.

# ps -ef | grep-i rpm

2. Odstraňte soubory zámku, které používá RPM:

# rm -f /var/lib/rpm/__db*
# /usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages

3. Pokud jste zaznamenali pozastavení příkazu „rpm“, zkuste to znovu. Pokud to funguje, jste hotovi. Pokud ne, proveďte kroky #1 a #2 znovu. Poté pokračujte dalším krokem.

4. Vytvořte zálohu databáze RPM:

# cd /var/lib
# mkdir rpm-backup
# rsync -av ./rpm/. ./rpm-backup/.

5. Znovu vytvořte databázi RPM:

# rpm -vv --rebuilddb > /tmp/rpmrebuilddb.log 2>&1

6. Zkuste znovu ověřit databázi otáček za minutu.

# cd /var/lib/rpm
# /usr/lib/rpm/rpmdb_verify Packages
Poznámka :Pokud výše uvedené kroky obnovy selžou nebo způsobí chyby, může být nejlepší volbou obnovení adresáře /var/lib/rpm z poslední zálohy systému. Nezapomeňte zálohu tar nepřepsat, protože může být stále cenná.

6. Zopakujte neúspěšný příkaz RPM.

Příklady příkazů RPM pro dotazování, instalaci, odstranění a aktualizaci balíčků


Cent OS
  1. Jak obnovit práci na pozadí z předchozího shellu?

  2. Jak se vzdáleně připojit k databázi MySQL z počítače

  3. Obnovení poškozené databáze RPM

  1. Jak vytvořit databázi v PostgreSQL

  2. Jak odebrat uživatele z databáze MySQL v cPanel

  3. Jak obnovit smazané soubory balíčků rpm (knihovny, konfigurační soubory) v CentOS/RHEL 7

  1. Jak zálohovat jednu databázi MySQL z příkazového řádku

  2. Jak vytvořit RPM balíček z Tarballu

  3. Jak obnovit databázi MySQL z phpMyAdmin?