Arch Linux: Πώς διορθώνουμε το «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
# Αν υπάρχει κάτι στην προσωρινή μνήμη, γράψτο στον δίσκο
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)» θα εξαφανιστεί

Advertisements

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

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

    1. Να’σε καλά, ευχαριστώ. Μην νομίζεις, και εγώ ότι είχα δοκιμάσει δεν δούλευε…

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

    3. Η πιο παρακινδυνευμένη λύση που υπάρχει και φυσικά δεν προτείνεται παρά μόνο αν δεν καταφέρετε τίποτα, είναι να ανοίξετε το αρχείο pacman.conf

      sudo nano  /etc/pacman.conf

      να βρείτε τη γραμμή που λέει

      SigLevel = Required DatabaseOptional

      και να την αλλάξετε σε

      SigLevel = Never

      Στη συνέχεια κάντε κανονικά update επανεκκίνηση και ξαναλλάξτε το στην προηγούμενη ρύθμιση του.
      Ξανατρέξτε το script του Salih για να επανέλθουν όλα κανονικά

      Αυτός ο τρόπος έσωσε ένα παρατημένο εδώ και 9 μήνες PC με Arch που αρνούνταν πεισματικά να κάνει update.

    4. Σημαντικό όπως λες να μην αφήσουμε την ρύθμιση SigLevel = Never και να την επαναφέρουμε στην SigLevel = Required DatabaseOptional

Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα:

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

Λογότυπο WordPress.com

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

Φωτογραφία Twitter

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

Φωτογραφία Facebook

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

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

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

Σύνδεση με %s