Probleme mit leerem Keyring nach Paket-Update
Posted on Saturday, 02 June 2018 in Linux
Ich habe auf meinem Server, einem Minirechner mit ARMv7 Prozessor, Arch Linux für ARM laufen. Wie üblich habe ich die Pakete mit pacman bzw. yaourt aktualisiert, wobei unter anderem das Paket archlinuxarm-keyring eine neue Version erhalten hat, welches den Keyring für die signierten Pakete zur Verfügung stellt. Das Pendant für ein reguläres Arch Linux ist archlinux-keyring. Zusätzlich wurde auch pacman selbst aktualisiert. Möglicherweise ist bei dem Update etwas schiefgelaufen, jedenfalls wurde nicht das übliche signieren und ungültig machen von PGP-Keys ausgeführt, welches ich von solchen Updates gewohnt bin. Eine Erklärung könnte sein, dass durch das Update von pacman das Paket package-query aus dem AUR aktualiert werden musste. Jedenfalls erhielt ich auch Ausgaben der Form
package-query: error while loading shared libraries: libalpm.so.10: cannot open shared object file: No such file or directory
was sich einfach durch eine manuelle Neuinstallation lösen lässt:
$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz
$ tar xzf package-query.tar.gz
$ cd package-query
$ makepkg -si
Keyring fehlt
Resultat des Updates war, dass ich scheinbar den für das Überprüfen der Paketsignaturen nötigen Keyring eingebüst hatte.
(X/X) checking keys in keyring
warning: Public keyring not found; have you run 'pacman-key --init'?
downloading required keys...
error: key "77193F152BDBE6A6" could not be looked up remotely
error: required key missing from keyring
error: failed to commit transaction (unexpected error)
Errors occurred, no packages were upgraded.
Das Ausführen von sudo pacman-key --init löst dieses Problem, indem es den Keyring mitsamt der Vertrauensdatenbank anlegt; dies schlägt pacman in der oben angegebenen Warnung bereits vor. Allerdings war dies nicht ausreichend. Die Signaturen wurden nun zwar geprüft, da der Schlüsselring wieder vorhanden war. Jedoch konnte beim Überprüfen der Paketintegrität die Signatur nicht als vertrauensvoll identifiziert werden, woraufhin pacman warnt, das Paket sei beschädigt:
(X/X) checking keys in keyring
downloading required keys...
:: Import PGP key 4096R/68B3537F39A313B3E574D06777193F152BDBE6A6, "Arch Linux ARM Build System builder@archlinuxarm.org", created: 2014-01-18? [Y/n] y
(X/X) checking package integrity
error: lz4: signature from "Arch Linux ARM Build System builder@archlinuxarm.org" is unknown trust
:: File /var/cache/pacman/pkg/lz4-1:1.8.2-2-armv7h.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] y
error: kmod: signature from "Arch Linux ARM Build System builder@archlinuxarm.org" is unknown trust
:: File /var/cache/pacman/pkg/kmod-25-1-armv7h.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] y
error: php: signature from "Arch Linux ARM Build System builder@archlinuxarm.org" is unknown trust
:: File /var/cache/pacman/pkg/php-7.2.6-1-armv7h.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n]
Diese Meldung erscheint für jedes Paket. Der Grund ist, dass mit pacman-key --init zwar der Schlüsselring angelegt wurde, allerdings wurden die benötigten Schlüssel selbst nicht importiert, weswegen, wie oben zu sehen, im ersten Schritt der fehlende Schlüssel importiert wird, aber das Vertrauen nicht bekannt ist. Da der Signatur also nicht vertraut wird, erscheint die Meldung, das Paket sei beschädigt:
File /path/to/package.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Keyring füllen
Der letzte Schritt zur Behebung des Problems besteht darin, die fehlenden Schlüssel zu importieren und die Vertrauensdatenbank zu aktualisieren. Dies kann mit
$ sudo pacman-key --populate archlinuxarm
ausgeführt werden. Da es sich um archlinuxarm-keyring handelt, muss im obigen Befehl entsprechend archlinuxarm auftauchen. Bei einer gewöhnlichen Arch Linux-Installation wäre dies entsprechend archlinux.
Wird jetzt versucht, eine Aktualisierung oder Installation von Paketen durchzuführen, können die Signaturen erfolgreich überprüft werden, wodurch die Fehler verschwinden.