Onehdy jsem se pokusil aktualizovat svůj desktopový systém Fedora 34 pomocí sudo dnf --refresh upgrade
příkaz a skončil s tímto problémem - chyba:rpmdbNextIterator:přeskakování h# 3643 Header V4 RSA/SHA256 Signature, ID klíče 45719a39:BAD .
$ sudo dnf --refresh upgrade
Ukázkový výstup:
[...] Running transaction check error: rpmdbNextIterator: skipping h# 3643 Header V4 RSA/SHA256 Signature, key ID 45719a39: BAD Header SHA256 digest: BAD (Expected cc14b51b22595cfdf9d87d21e6ab8604b62eb6481c4669fe814a9109754f4d54 != 00a7eb336286e45cec1ce6b67c4093fe6059bbe1ec95279f81dc51e2dc97ec89) Header SHA1 digest: BAD (Expected a5f792ecf06988120d3127a8b272471bf6927fca != 348ab5cbf958d0898e9ac2b69a5306a5fba7dbfd) The downloaded packages were saved in cache until the next successful transaction. You can remove cached packages by executing 'dnf clean packages'. Error: An rpm exception occurred: package not installed

Bylo to poprvé, co jsem dostal takovou chybu, a nebyl jsem si jistý kořenem problému.
A také jsem vyzkoušel několik různých příkazů:
$ sudo dnf update
$ sudo dnf --refresh update
$ sudo dnf --refresh dist-upgrade
Pokaždé se mi zobrazila stejná chyba jako výše.
Po několika prohledávání webu jsem našel řešení tohoto problému ve fórech Fedory.
Oprava „error:rpmdbNextIterator:skipping“ ve Fedoře
Chcete-li opravit rpmdbNextIterator
chyba, jednoduše znovu vytvořte databázi RPM provedením následujícího příkazu:
$ sudo rpm --rebuilddb
Pokud se stále setkáte se stejnou chybou, spusťte výše uvedený příkaz ještě jednou. Pokud je problém vyřešen, neuvidíte žádný výstup.
A poté aktualizujte systém Fedory pomocí příkazu:
$ sudo dnf --refresh update

Někdy nepomůže přebudování databáze RPM. V takovém případě jej můžete zálohovat a znovu vytvořit, jak je uvedeno níže:
$ sudo mkdir /var/lib/rpm/old
$ sudo mv /var/lib/rpm/Pubkeys /var/lib/rpm/old/
Zálohování databáze RPM:
$ mv /var/lib/rpm/__db* /var/lib/rpm/old/
Pokud nechcete zálohovat databázi RPM, jednoduše ji smažte.
$ sudo rm /var/lib/rpm/__db*
Nyní spusťte následující příkaz k opětovnému sestavení databáze RPM:
$ sudo rpm --rebuilddb
Pokud vše půjde dobře, nedostanete žádný výstup.
A pak aktualizujte/upgradujte systém Fedory jako obvykle.
$ sudo dnf update --refresh
V některých případech se zobrazí chyba oprávnění odepřeno, jak je uvedeno níže.
$ sudo rpmdb --rebuilddb -v
error: could not delete old database at /var/lib/rpmold.161084
Vymažte výše uvedenou databázi ručně pomocí rm
příkaz:
$ sudo rm -rf /var/lib/rpmold.rpmold.161084
Poté znovu vytvořte databázi RPM:
$ sudo rpmdb --rebuilddb -v
Nakonec aktualizujte systém Fedory:
$ sudo dnf update --refresh
Ukázkový výstup:
Fedora 34 - x86_64 19 kB/s | 6.4 kB 00:00 Fedora 34 openh264 (From Cisco) - x86_64 3.2 kB/s | 989 B 00:00 Fedora Modular 34 - x86_64 14 kB/s | 6.5 kB 00:00 Fedora 34 - x86_64 - Updates 12 kB/s | 5.6 kB 00:00 Fedora Modular 34 - x86_64 - Updates 22 kB/s | 6.5 kB 00:00 RPM Fusion for Fedora 34 - Free 4.9 kB/s | 7.1 kB 00:01 RPM Fusion for Fedora 34 - Free - Updates 6.9 kB/s | 6.5 kB 00:00 RPM Fusion for Fedora 34 - Free - Updates 45 kB/s | 337 kB 00:07 RPM Fusion for Fedora 34 - Nonfree 6.6 kB/s | 7.1 kB 00:01 RPM Fusion for Fedora 34 - Nonfree - Updates 7.7 kB/s | 7.1 kB 00:00 Dependencies resolved. [...]
Doufám, že to pomůže.
Související čtení:
- [Vyřešeno] chyba rpmdb poškozené záhlaví ve Fedoře, CentOS
- Jak vyřešit chybu „Chyba:rpmdb open failed“ v CentOS