Gentoo: Failed on WHIRLPOOL verification

Wenn man ein älteres Gentoo-System aktualisieren möchte, stösst man unter Umständen darauf, dass sich kein einziges Paket mehr installieren lässt. Jeder Versuch wir mit dem folgenden Fehler quittiert:

!!! Fetched file: packagename.tar.gz VERIFY FAILED!
!!! Reason: Failed on WHIRLPOOL verification
!!! Got:      c7dc7a5f5973bd9a8032ab1bde6eb25a065676c089cdc392ede330125f3c52528014e453c1bda49967079e87420b5b8dba4f373752136717304a4d32b5dd8d8f
!!! Expected: 9943706ad02e377cb38d65caed6f675d37db7aa53dd86319b17405791494bf11244ac933867516cca9438947202b595b6606088a8aaa436655f9eeb8d078b77e
Refetching... File renamed to '/usr/portage/distfiles/packagename.tar.gz._checksum_failure_.g4pa7S'

Eigentlich deutet diese Fehlermeldung darauf hin, dass das Paket nicht in Ordnung ist – möglicherweise wurde es manipuliert oder fehlerhaft heruntergeladen. Hier war aber das Problem, dass der Whirlpool-Algorithmus auf der alten Installation nicht sauber unterstützt wurde.

Zu beginn sollte man die Portage synchronisieren und sich die Pakete anschauen, welche für die neue Version benötigt werden:

srv ~ # emerge --sync && emerge -pvu portage
[...]
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U  ] sys-libs/readline-6.2_p1 [6.0_p4] 0 kB
[ebuild  N     ] virtual/yacc-0  0 kB
[ebuild     U  ] app-shells/bash-4.2_p37 [4.0_p35] USE="net nls (readline%*) -afs -bashlogger -examples -mem-scramble -plugins -vanilla" 0 kB
[ebuild     U  ] sys-apps/portage-2.1.11.31 [2.1.10.49] USE="(ipc) -build -doc -epydoc (-pypy2_0) -python2 -python3 (-selinux) -xattr (-pypy1_8%)" LINGUAS="-pl" 829 kB

Total: 4 packages (3 upgrades, 1 new), Size of downloads: 829 kB

 * IMPORTANT: 7 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.

Nun müssen einige Dateien im Portage-Verzeichnis manipuliert werden:

srv ~ # nano -w /usr/portage/metadata/layout.conf

In dieser Datei sucht man die Zeile

manifest-hashes = SHA256 SHA512 WHIRLPOOL

und ersetzt sie durch

#manifest-hashes = SHA256 SHA512 WHIRLPOOL
manifest-hashes = SHA256 SHA512

Bei gewissen Installationen reicht diese Modifikation schon aus, bei anderen müssen noch die folgenden Dateien manipuliert werden:

srv ~ # nano -w /usr/portage/sys-libs/readline/Manifest \
> /usr/portage/app-shells/bash/Manifest \
> /usr/portage/sys-apps/portage/Manifest

In den Dateien sucht man nun die folgenden Zeilen und löscht den WHIRLPOOL-Hash (jeweils ganz am Schluss der Zeile, das Keyword “WHIRLPOOL” muss ebenfalls entfernt werden)

DIST readline-6.2.tar.gz 2277926 [...]
DIST bash-4.2.tar.gz 7009201 [...]
DIST portage-2.1.11.31.tar.bz2 848585 [...]

Damit kennt Portage nun für diese Pakete keine solchen Hashes mehr, daher kann nun aktualisiert werden:

srv ~ # emerge -avu portage

Nachdem Portage erfolgreich aktualisiert wurde, müssen die Manipulationen wieder rückgängig gemacht werden. Dazu aktualisiert man am Besten die Portage nochmals – auch wenn das gegen die Netiquette verstösst…

Solche Manipulationen sollten übrigens nur im äussersten Notfall angewendet werden!

4 thoughts on “Gentoo: Failed on WHIRLPOOL verification”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.