Arch: Πώς διορθώνουμε το «invalid or corrupted package (PGP signature)»

Σε μια ρέουσα διανομή όπως το 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
# Συγχρόνισε, αναβάθμισε, επίσημα και AUR πακέτα
yaourt -Syyua
# Αν υπάρχει κάτι στην προσωρινή μνήμη, γράψτο στον δίσκο
sync

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

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

chmod +x neaupografi

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

sudo mv neaupografi /usr/local/bin/

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

neaupografi

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

Advertisements

3 thoughts on “Arch: Πώς διορθώνουμε το «invalid or corrupted package (PGP signature)»

  1. Μπράβο ρε φιλαράκι πολύ καλό, δουλεύει άψογα!
    Στα forum του arch και antergos που έψαξα (αυτά έβγαλε πρώτα το google) δεν βρήκα την σωστή λύση. Προτείνω να την δώσεις εκεί θα σώσεις πολλούς. Εδώ πραγματικά βρήκα τη λύση αλλά και κατάλαβα γιατί δημιουργήθηκε το πρόβλημα και πάλι Ευχαριστούμε!

      1. Σε εμένα δεν δουλεύει το έχω δοκιμάσει αρκετές φορές αλλά τίποτα, μήπως γνωρίζεται κάποια άλλη λύση?

Απορίες, παρατηρήσεις, ιδέες... Ελεύθερα ! Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s