Această pagină poate fi doar citită. Poți vedea sursa, dar nu poți modifica pagina. Consultă administratorul dacă ești de părere că ceva este în neregulă. ====== Instalarea unui pachet RPM când apare eroarea „no digest” ====== {{tag>rpm linux fedora rhel centos pachete troubleshooting dnf}} Uneori, la instalarea unui pachet RPM, procesul eșuează cu un mesaj de eroare de tipul: <code> error: <nume-pachet>.rpm: no digest for header (rpmReadPackageFile) </code> sau, în cazul instalării prin ''dnf''/''yum'': <code> Error: Transaction check error: package <nume-pachet> does not verify: no digest </code> ===== 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: <code bash> rpm -Kv nume-pachet.rpm </code> Dacă în rezultat vezi ceva similar cu: <code> Header SHA256 digest: NOTFOUND Header SHA1 digest: OK MD5 digest: NOTFOUND </code> î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: <code bash> sudo rpm -ivh --nodigest --nofiledigest nume-pachet.rpm </code> 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: <code bash> sudo rpm -Uvh --nodigest --nofiledigest nume-pachet.rpm </code> ===== Alternativa cu dnf ===== Unii utilizatori raportează că problema se rezolvă și prin: <code bash> sudo dnf install --nogpgcheck ./nume-pachet.rpm </code> Î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. <note important> 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. </note> ===== 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: - Verifică situl proiectului sau sistemul lor de suport pentru a vedea dacă există deja o versiune corectată a pachetului. - Dacă nu, raportează problema dezvoltatorilor, menționând mesajul exact de eroare. - 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 |