Instalarea unui pachet RPM când apare eroarea „no digest”

Aceasta e o versiune anterioară a paginii.


Instalarea unui pachet RPM când apare eroarea „no digest”

Uneori, la instalarea unui pachet RPM, procesul eșuează cu un mesaj de eroare de tipul:

error: <nume-pachet>.rpm: no digest for header (rpmReadPackageFile)

sau, în cazul instalării prin dnf/yum:

Error: Transaction check error:
  package <nume-pachet> does not verify: no digest

Cauza

Această eroare apare când pachetul RPM a fost construit cu un algoritm de digest (sumă de control) vechi sau slab, de obicei MD5, iar sistemul pe care încerci să-l instalezi nu mai acceptă acel algoritm ca fiind valid pentru verificare.

Situații tipice în care apare:

  • Distribuția rulează în modul FIPS, care interzice explicit MD5.
  • Ai o versiune nouă de RPM (de exemplu rpm 6 pe Fedora 43 și mai nou) care a renunțat la suportul pentru algoritmi vechi.
  • Pachetul este mai vechi și dezvoltatorul nu l-a reconstruit încă cu un digest modern (SHA256).

Important: nu este vorba despre o semnătură GPG lipsă sau invalidă, ci despre lipsa sau invaliditatea sumei de control a headerului sau a conținutului pachetului. Din acest motiv, „`–nogpgcheck`” nu rezolvă întotdeauna problema.

Verificare

Poți confirma cauza rulând:

rpm -Kv nume-pachet.rpm

Dacă în rezultat vezi ceva similar cu:

Header SHA256 digest: NOTFOUND
Header SHA1 digest: OK
MD5 digest: NOTFOUND

înseamnă că pachetul folosește un digest pe care programul rpm de pe sistemul tău nu îl mai validează.

Soluția rapidă

Dacă ai încredere în sursa pachetului (de exemplu îl descarci direct de pe situl oficial al dezvoltatorului), poți forța instalarea, sărind peste verificarea digestului:

sudo rpm -ivh --nodigest --nofiledigest nume-pachet.rpm

Explicație:

  • „`–nodigest`” - ignoră verificarea digestului headerului pachetului
  • „`–nofiledigest`” - ignoră verificarea digestului fiecărui fișier din pachet

Dacă instalezi o actualizare peste un pachet deja instalat, folosește:

sudo rpm -Uvh --nodigest --nofiledigest nume-pachet.rpm

Alternativa cu dnf

Unii utilizatori raportează că problema se rezolvă și prin:

sudo dnf install --nogpgcheck ./nume-pachet.rpm

Însă acest lucru dezactivează verificarea semnăturii, nu neapărat pe cea a digestului, așa că nu funcționează în toate cazurile. Dacă eroarea persistă, revino la metoda cu „`rpm`” de mai sus.

Sărind peste verificarea digestului, nu mai ai garanția integrității pachetului (că fișierul nu a fost corupt sau alterat). Folosește această metodă doar pentru pachete din surse de încredere, descărcate direct de la dezvoltator sau dintr-un depozit oficial.

Soluția pe termen lung

Cea mai bună soluție este ca pachetul să fie reconstruit de dezvoltator cu un digest modern (SHA256). Dacă problema apare frecvent cu un anumit program:

  1. Verifică situl proiectului sau sistemul lor de suport pentru a vedea dacă există deja o versiune corectată a pachetului.
  2. Dacă nu, raportează problema dezvoltatorilor, menționând mesajul exact de eroare.
  3. Ca soluție temporară, folosește flag-urile „`–nodigest –nofiledigest`” până apare pachetul actualizat.

Rezumat

Metodă Când o folosești
rpm -ivh –nodigest –nofiledigest Instalare nouă, pachet de încredere
rpm -Uvh –nodigest –nofiledigest Actualizare peste o instalare existentă
dnf install –nogpgcheck Alternativă, funcționează uneori
Așteptare pachet reconstruit Soluție corectă pe termen lung