Σε μια ρέουσα διανομή όπως το Arch, μια-δυο φορές τον χρόνο θα συναντήσει κανείς ένα σφάλμα με μήνυμα «invalid or corrupted package (PGP signature)» κατα την διάρκεια αναβάθμισης που γίνεται στα πακέτα. Ας δούμε πως το διορθώνουμε.Πρόσφατα λοιπόν, όταν ξεκίνησα να κάνω την καθιερωμένη αναβάθμιση του συστήματος με τις τελευταίες διαθέσιμες ενημερώσεις μου… έφαγα πόρτα στα μούτρα με το παρακάτω μήνυμα:

Error: antergos-keyring: signature from "Antergos Build Server (Automated Package Build System) <admin@antergos.org>" is unknown trust
:: File /var/cache/pacman/pkg/antergos-keyring-20170524-1-any.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n]
error: tilix: signature from "Antergos Build Server (Automated Package Build System) <admin@antergos.org>" is unknown trust
:: File /var/cache/pacman/pkg/tilix-1.5.8-1-x86_64.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n]
error: failed to commit transaction (invalid or corrupted package)
Errors occurred, no packages were upgraded.

… και φυσικά, η αναβάθμιση σταμάτησε…. Οπότε μέσα μου μια φωνή είπε… » Ώ να σε… πάλι ;; »

Το σφάλμα έχει να κάνει με την ψηφιακή υπογραφή των πακέτων (που παρέχεται από το πακέτο *-keyring) και επειδή αυτά πολλές φορές αλλάζουν και ενημερώνονται, μια οποιαδήποτε καθυστέρηση στους διάφορους mirrors ή στην μη έγκαιρη ενημέρωση κάποιων υπογραφών δημιουργεί αυτό το «σκάλωμα». Συνήθως η μεμονωμένη αναβάθμιση του πακέτου πριν από όλες τις άλλες διαθέσιμες ενημερώσει, λύνει το πρόβλημα.

Αυτή την φορά όμως δεν το έλυσε…. Οπότε έπρεπε να ακολουθήσω διαφορετική διαδρομή. Έπρεπε λοιπόν να εκτελέσω μια σειρά εντολών για να λυθεί το πρόβλημα. Επειδή όμως, κάποια στιγμή πολύ πιθανών θα το ξανά πάθω, αποφάσισα να φτιάξω ένα προγραμματάκι (script). Προϋπόθεση είναι να έχετε yaourt και reflector εγκατεστημένα στο Arch σας.

Όπως είδαμε στο άρθρο «Φτιάξε δικές σου εντολές» θα ανοίξουμε ένα τερματικό και σε ένα κειμενογράφο (nano, vim, ed κλπ) θα γράψουμε τα παρακάτω:

#!/bin/bash
# Ενημέρωσε την κλειδωθήκη με νέες υπογραφές
sudo pacman-key --refresh-keys
# Ψάξε και ενημέρωσε το σύστημα με τα ταχύτερα αποθετήρια
sudo reflector --age 8 --fastest 128 --latest 64 --number 32 --sort rate --save /etc/pacman.d/mirrorlist
# Αν υπάρχει κάτι στην προσωρινή μνήμη, γράψτο στον δίσκο
sync
sudo rm -R /etc/pacman.d/gnupg
sudo pacman-key --init
sudo pacman-key --populate archlinux
# Συγχρόνισε, αναβάθμισε, επίσημα και AUR πακέτα
yaourt -Syyua

Κλείνουμε και αποθηκεύουμε το αρχείο με όποιο όνομα θα μας θυμίζει την λύση…. (αυτοσχεδιάστε) π.χ. neaupografi

Το κάνουμε εκτελέσιμο

chmod +x neaupografi

Τέλος μεταφέρουμε το αρχείο στο /usr/local/bin/

sudo mv neaupografi /usr/local/bin/

Ωραία τώρα κλείστε και ξανανοίξτε το τερματικό και τρέξετε

neaupografi

Με λίγη υπομονή, μιας και ανάλογα την ταχύτητα του δικτύου σας θα πάρει μερικά λεπτά, θα ολοκληρωθεί η διαδικασία και το μήνυμα σφάλματος «invalid or corrupted package (PGP signature)» θα εξαφανιστεί