Come appare il messaggio
W: GPG error: https://repo.example.com/debian stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1A2B3C4D5E6F7A8BCause frequenti
- La chiave del repo non è mai stata importata, tipico dopo aver aggiunto una nuova fonte.
- La chiave è scaduta e il fornitore l'ha ruotata.
- Il keyring non è nel percorso atteso, spesso dopo un upgrade di distribuzione.
- Una fonte vecchia punta a un repository firmato diversamente adesso.
- L'orologio di sistema è sbagliato, così firme valide risultano scadute.
Verifica
- Messaggio e key ID
apt-get update 2>&1 | grep -B1 -A3 -i 'NO_PUBKEY' - Keyring presenti
ls -l /etc/apt/keyrings/ /usr/share/keyrings/ 2>/dev/null | head -n 20 - Controlla l'orologio di sistema
date -u; timedatectl status | head -n 5 - Mostra la fonte interessata
grep -rn . /etc/apt/sources.list.d/ | head
Soluzione
- Scarica la chiave dal fornitore del repository, non da un keyserver qualsiasi:
curl -fsSL URL | gpg --dearmor -o /etc/apt/keyrings/repo.gpg. - Punta la fonte al keyring:
signed-by=/etc/apt/keyrings/repo.gpg. - Se la chiave è scaduta verifica se il fornitore ne ha pubblicata una nuova e aggiorna la fonte.
--allow-unauthenticatedo disattivare la verifica delle firme non è una soluzione, è un buco di sicurezza.- Rilancia
apt-get updatee leggi tutto l'output.
Domande frequenti
Posso ignorare l'avviso?
No. Senza firma valida apt può installare pacchetti manomessi. O recuperi la chiave o rimuovi la fonte.
Perché compare dopo un upgrade?
Perché si usano nuovi percorsi e keyring e le fonti vecchie non portano con sé la chiave.