Passare al contenuto

«invalid or corrupted package (PGP signature)»

Ogni pacchetto distribuito da Ditana è firmato, e pacman si rifiuta di installare un pacchetto la cui firma non è in grado di verificare. Questo significa che il meccanismo funziona. Ma significa anche che un portachiavi non aggiornato vi preclude proprio gli aggiornamenti che lo sistemerebbero.

Vedrete uno di questi messaggi, a seconda che la chiave di firma manchi dal vostro portachiavi oppure sia presente ma non considerata fidata:

error: ditana-mirrorlist: key "3EC223A811077C09" is unknown
:: Import PGP key 3EC223A811077C09? [Y/n]
error: 'ditana-mirrorlist-1.12-1-any.pkg.tar.zst': invalid or corrupted package (PGP signature)
error: ditana-mirrorlist: signature from "Stefan Zipproth <[email protected]>" is unknown trust
error: failed to commit transaction (invalid or corrupted package (PGP signature))

Per un pacchetto di Ditana:

Finestra del terminale
sudo pacman -Sy ditana-keyring

Per un pacchetto di Arch (stesso problema, stessa forma – questo caso è frequente su sistemi rimasti offline per mesi):

Finestra del terminale
sudo pacman -Sy archlinux-keyring

Questa è l’eccezione alla regola «mai -Sy per un singolo pacchetto» enunciata in L’aggiornamento non è facoltativo, e vale la pena capire perché è sicura, anziché trattarla come una formula magica. Nella transazione c’è un solo pacchetto, quindi non si verifica alcun aggiornamento parziale di un grafo di dipendenze. Quel pacchetto è piccolo e non contiene eseguibili. E la sua firma è verificabile con una chiave che la vostra installazione possiede già, per cui non si accorda fiducia a nulla che non fosse già considerato fidato – installarlo esegue pacman-key --populate, che aggiunge al vostro portachiavi l’insieme attuale delle chiavi di Ditana. Dopodiché eseguite come di consueto un aggiornamento completo.

Se preferite farlo a mano, ecco esattamente ciò che esegue lo script di installazione del pacchetto:

Finestra del terminale
sudo pacman-key --populate ditana

I pacchetti di Ditana sono firmati con questa chiave:

pub rsa4096 3F80 54C3 FF75 5E55 44E6 8516 BC33 3E9A E877 D45A
uid Stefan Zipproth <[email protected]>
uid Stefan Zipproth <[email protected]>

Contiene una sottochiave di firma dedicata, ed è questa sottochiave a firmare il database del repository e ogni pacchetto compilato da agosto 2026:

sub rsa4096 068E EA2A 490B 0C63 AEAA 3BCD 3EC2 23A8 1107 7C09

L’impronta digitale con cui fate la verifica resta quella indicata sopra: una sottochiave può essere sostituita senza che l’impronta cambi. Un portachiavi anteriore a ditana-keyring 20260809 non conosce affatto la sottochiave, ed è esattamente la situazione a cui rimedia la riparazione descritta sopra.

Verificate di che cosa si fida il vostro sistema con:

Finestra del terminale
pacman-key --list-sigs ditana
gpg --show-keys --with-subkey-fingerprint /usr/share/pacman/keyrings/ditana.gpg

Qui deliberatamente non offriamo uno script di riparazione da scaricare ed eseguire. La situazione in cui vi trovate è «la mia verifica delle firme non riesce»; rispondere con «scaricate questo ed eseguitelo come root» è formalmente la stessa operazione che le firme esistono per impedire, e nemmeno lo script potrebbe essere firmato in modo sensato – è proprio la verifica della firma a essere guasta. Un comando che potete leggere è meglio di una scatola nera.

  • L’orologio è sbagliato. Una firma non è valida prima del momento in cui è stata creata. Se l’orologio di sistema è molto indietro nel tempo – una batteria CMOS scarica, una VM appena creata, una configurazione a doppio avvio con Windows che scrive l’ora locale nell’RTC – ogni firma sembra provenire dal futuro. Verificate con timedatectl e attivate NTP con sudo timedatectl set-ntp true.
  • Un mirror ha fornito un file troncato. In questo caso il messaggio menziona una somma di controllo anziché una firma PGP. sudo pacman -Scc svuota la cache dei download, e il prossimo aggiornamento scarica di nuovo il file.

Questa traduzione è stata realizzata automaticamente. I lettori la migliorano su Weblate.