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!
Thank you!
Aller besten Dank!
Thank You very much. You saved my life 😉
Thanks! I flushed whirpool down the drain long enough to get python updated!