domenica 15 febbraio 2009

Importare chiave di autenticazione di un repository

Qualche giorno fa mentre facevo l'aggiornamento del sistema con l'apposito gestore, mi è comparso il seguente messaggio di errore:

Si è verificato un errore

Sono forniti i seguenti dettagli:

W: Errore GPG: http://ppa.launchpad.net hardy Release: Le seguenti firme non sono state verificate perché la chiave pubblica non è disponibile: NO_PUBKEY 60D11217247D1CFF



Il problema era dovuto alla mancanza di una chiave di autenticazione per il repository di terze parti che avevo aggiunto per aggiornare OpenOffice.org alla versione 3. Per risolvere, nel terminale bisogna inserire questo comando
gpg --keyserver keyserver.ubuntu.com --recv 247D1CFF && gpg --export -a 247D1CFF | sudo apt-key add -
(fonte: http://forum.ubuntu-it.org/index.php/topic,257312.msg1815923.html#msg1815923 Nota che la stringa alfanumerica inserita è uguale agli ultimi 8 caratteri della chiave indicata nel messaggio di errore )

Ora illustro alcuni dei metodi che si possono usare per importare la chiave di autenticazione di un repository.

USO DI INTERFACCIA GRAFICA
Per autenticare i repository di terze parti per via grafica è necessario installare il pacchetto gui-apt-key. Questo può essere installato con Synaptic oppure tramite terminale con il comando
sudo apt-get install gui-apt-key
Dopo l'installazione troverete il programma in ApplicazioniStrumenti di sistemaAPT Key Manager (se avete problemi ad aprirlo in questo modo leggete qui), oppure lo potete avviare da terminale con il comando
sudo gui-apt-key


Nella finestra che si aprirà vi basterà scrivere o incollare il numero della chiave pubblica, fare clic su Aggiungi e quindi su Ok nel popup che si aprirà.


IMPORTARE MANUALMENTE LA CHIAVE
Aprite il sito http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0xCHIAVE sostituendo a CHIAVE il numero della chiave pubblica, quindi nel caso del repository di OpenOffice.org 3 dovreste aprire la pagina http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x60D11217247D1CFF. Copiate il contenuto della pagina a partire da
-----BEGIN PGP PUBLIC KEY BLOCK-----
fino a
-----END PGP PUBLIC KEY BLOCK-----
in un editor di testo, quindi salvate il file. Aprite SistemaAmministrazioneSorgenti software. Nella scheda Autenticazione fate clic su Importa file chiave... e selezionate il file appena salvato. Se l'autenticazione avviene con successo potete anche cancellare il file.


Se utilizzate un proxy che vi blocca la porta 11371 (la porta ufficiale per i key server OpenGPG), invece di cercare la chiave sul sito precedente (che vi risulterebbe irraggiungibile) andate sul sito http://keyserver.linux.it/pks/lookup?op=get&search=0xCHIAVE sostituendo, come prima, a CHIAVE il numero della chiave pubblica. Quindi, nel solito esempio del repository di OpenOffice.org 3, la chiave si troverà all'indirizzo http://keyserver.linux.it/pks/lookup?op=get&search=0x60D11217247D1CFF. Il resto della procedura è esattamente lo stesso (grazie a Ilvio per la segnalazione del problema nei commenti).

COMANDI NEL TERMINALE
Il primo comando che si può usare è
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com $KEY
sostituendo a $KEY il numero della chiave pubblica che compare come errore. Quindi in questo caso dovremmo dare il comando
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 60D11217247D1CFF
Oppure possiamo dare il comando precedentemente illustrato:
gpg --keyserver keyserver.ubuntu.com --recv $KEY && gpg --export -a $KEY | sudo apt-key add -
sostituendo questa volta a $KEY gli ultimi 8 caratteri alfanumerici del numero della chiave pubblica che compare nel messaggio di errore.

Si possono anche dare i seguenti due comandi di fila:
gpg --keyserver keyserver.ubuntu.com --recv-keys $KEY
gpg --export --armor $KEY | sudo apt-key add -
sostituendo (come nel primo caso) a $KEY l'intera stringa alfanumerica (non solo gli ultimi 8 caratteri) corrispondente al numero della chiave pubblica che viene mostrata nel messaggio di errore.
Quindi, in questo caso specifico si dovrebbe mettere il seguente codice nel terminale:
gpg --keyserver keyserver.ubuntu.com --recv-keys 60D11217247D1CFF
gpg --export --armor 60D11217247D1CFF | sudo apt-key add -
(fonte: http://ubuntuforums.org/showthread.php?p=6649356#post6649356).

Se siete dietro a un proxy che blocca la porta 11371, in tutti i comandi appena illustrati, al posto del key server keyserver.ubuntu.com mettete keyserver.linux.it.

Un ulteriore utile metodo per aggiornare facilmente le chiavi è il seguente. Aggiungete nel vostro file ~/.bashrc il seguente codice:
# Add PPA keys
function add-ppa-key
{
APTKEYID=${1}
gpg \
--no-default-keyring \
--keyring /tmp/keyring.tmp \
--keyserver keyserver.ubuntu.com \
--recv ${APTKEYID}
gpg \
--no-default-keyring \
--keyring /tmp/keyring.tmp \
--export --armor ${APTKEYID} \
| sudo apt-key add -
rm /tmp/keyring.tmp

SHORTAPTKEYID=`echo ${1} | sed 's/.*\(.\{8\}\)$/\1/'`
sudo apt-key list | grep -A 1 ${SHORTAPTKEYID}
}
e poi richiamate nel terminale la funzione con il comando
add-ppa-key XYZ
dove XYZ è il numero della chiave da aggiornare. Nel caso illustrato sopra, quindi, per aggiornare si dovrebbe utilizzare il comando
add-ppa-key 60D11217247D1CFF
(fonte: http://ubuntuforums.org/showthread.php?p=6664789#post6664789).

SCRIPT BASH
Se conoscete l'uso degli script bash potete scaricare questo script dal forum internazionale (dopo la registrazione): http://ubuntuforums.org/attachment.php?attachmentid=101390&d=1233230528 (discussione originale: http://ubuntuforums.org/showthread.php?p=6638010#post6638010).




Altre informazioni sulle chiavi di autenticazione possono essere trovate a questo indirizzo: https://help.launchpad.net/Packaging/PPA#Adding%20a%20PPA%20to%20your%20Ubuntu%20repositories

11 commenti:

  1. Sono dietro un proxy che mi filtra quella porta, posso scaricare la chiave n altro modo?
    Grazie

    RispondiElimina
  2. Vedi se riesci ad accedere al sito http://keyserver.linux.it/ Per cercare, per esempio, la chiave del repository di OpenOffice.org (la cui chiave pubblica è 60D11217247D1CFF) devi scrivere 0x0x60D11217247D1CFF. Il risultato della ricerca è http://keyserver.linux.it/pks/lookup?op=index&search=0x60D11217247D1CFF e fai clic su "247D1CFF", quindi ti si aprirà http://keyserver.linux.it/pks/lookup?op=get&search=0x60D11217247D1CFF. In questo modo dovresti poter seguire il metodo manuale. Fammi sapere se funziona, così aggiungo queste istruzioni nella guida :)

    RispondiElimina
  3. Ti ringrazio per la risposta tempestiva, la soluzione da te suggerita funziona perfettamente, unico appunto è sufficiente scrivere una volta 0x davanti alla chiave per fare una ricerca in esadecimale. Poi apt-get update va senza problemi.

    [OT]Purtroppo a me interessava eclipse 3.4 ho aggiunto la chiave (per chi interessato la key del ppa è 5126890cdcc7afe0) ma non ho avuto successo nel trovare la release 3.4, e i deb non si trovano, proverò a farmeli da solo. Il tar.gz non mi piace poiché mi sembra di togliere la consisenza del sistema che apt mi garantisce
    Se vuoi aprire un altro post/howto ti do una mano. Grazie, congratulazioniper l'articolo e a presto.

    Ilvio

    RispondiElimina
  4. Ho aggiunto le istruzioni per ottenere la chiave di autenticazione dei repository sia manualmente sia attraverso comandi nel terminale, grazie mille.

    Per il problema con eclipse non ti so aiutare perché non utilizzo quel software. Ho visto il ppa su launchpad e mi sembra che ci siano problemi nella creazione dei pacchetti per la versione 3.4, forse è per questo che non si trovano i deb, di più non ti so dire. Ciao!

    RispondiElimina
  5. [OT] Trovata anche una soluzione per installare eclipse 3.4 aka Ganymede su ubuntu 9.04 jaunty

    Aggiungere ai repository il seguente e la relativa chiave e sostituite la parola "jaunty" con "hardy":

    deb http://ppa.lauchpad.net/eclipse-team/ppa/ubuntu jaunty main

    Ricordatevi di sostituire jaunty con hardy.
    Non conosco il motivo, ma pare che sul repository della jaunty ganymede non sia disponibile, comunque sia così a me eclipse 3.4 viene installata e si avvia.
    Dopo aver installato eclipse credo sia meglio rimuovere o deselezionare il repository del ppa.
    Ciau!!!

    Ilvio

    RispondiElimina
  6. Grazie 1000 e una volta, ho risolto il problema con la prima soluzione che hai proposto. Avevo gia scaricato apt key manager, ma non lo avevo mai usato. Mi stavo proprio scervellando. Ti aggiungo fra i miei blog preferiti di ubuntu ;-)

    RispondiElimina
  7. Grazie per i complimenti :)

    Comunque a partire dalla versione 9.10 di Ubuntu (karmic koala) aggiungere un repository di Launchpad è ancora più semplice perché importa automaticamente anche la chiave di autenticazione. In sorgenti software basta aggiungere `ppa:nome-repository' (sostituendo a `nome-repository' il nome che si trova nella relativa pagina su Launchpad) oppure con il comando nel terminale

    sudo add-apt-repository ppa:nome-repository

    Magari aggiungo questa possibilità nella guida

    RispondiElimina
  8. Ciao,ma queste istruzioni valgono anche per xandros???

    RispondiElimina
  9. Non conosco Xandros, però immagino che il programma gpg sia disponibile in tutte le distro GNU/Linux, quindi non dovrebbero esserci problemi.

    Ciao

    RispondiElimina
  10. dpkg: errore: analisi del file "/var/lib/dpkg/available" vicino alla riga 0:
    il nome del campo "../../../../../../../share/pyshared/papyon/service/Spaces/scenario/get_contact_card.py" deve essere seguito dai due punti

    Continua a darmi questo errore, qualcuno sa cosa significa?
    Grazieee

    RispondiElimina
  11. Non credo che il tuo problema abbia nulla a che fare con l'importazione di chiavi di autenticazione di un repository. Immagino che il problema si possa risolvere cancellando il file incriminato e ricostruendo l'elenco dei pacchetti disponibili. In effetti cercando su internet (tu l'avevi fatto?) ho trovato qui come soluzione dare i seguenti comandi
    ----------
    sudo dpkg --clear-avail
    sudo apt-get update
    ----------

    Ciao

    RispondiElimina

I commenti inseriti vengono lasciati dall'autore degli stessi accettandone ogni eventuale responsabilità civile e penale.
Il curatore del blog si riserva la possibilità di eliminare messaggi contenenti frasi offensive o spam.