Come posso firmare correttamente un pacchetto che ho modificato e ricompilato?


20

Ho corso dpkg-buildpackagedopo aver ottenuto una apt-get source nginxversione backport di nginx e aver modificato debian/rulesper includere il modulo uwsgi. Gli ultimi risultati del comando sono stati:

dpkg-deb: building package `nginx' in `../nginx_0.7.67-3~bpo50+1_i386.deb'.
dpkg-deb: building package `nginx-dbg' in `../nginx-dbg_0.7.67-3~bpo50+1_i386.deb'.
 signfile nginx_0.7.67-3~bpo50+1.dsc
gpg: keyring `/home/shogun/.gnupg/secring.gpg' created
gpg: skipped "Faidon Liambotis <paravoid@debian.org>": secret key not available
gpg: [stdin]: clearsign failed: secret key not available

 dpkg-genchanges  >../nginx_0.7.67-3~bpo50+1_i386.changes
dpkg-genchanges: warning: the current version (0.7.67-3~bpo50+1) is smaller than the previous one (0.7.67-3)
dpkg-genchanges: not including original source code in upload
dpkg-buildpackage: binary and diff upload (original source NOT included)
dpkg-buildpackage: warning: Failed to sign .dsc and .changes file

Si lamenta che, poiché non sono il manutentore originale del pacchetto, la mia chiave non corrisponde.

È davvero necessario e, in caso affermativo, come posso farlo usando le mie chiavi per fare la corrispondenza gpg?

Risposte:


32

I pacchetti Debian con firma PGP non sono necessari se li hai creati per il tuo uso privato. È solo il metodo di autenticazione comune per gli sviluppatori (ufficiali) Debian quando caricano nuovi pacchetti nel ramo "instabile" di Debian.

Per evitare il messaggio di errore basta usare:

dpkg-buildpackage -uc -us

(vedi anche la manpage di dpkg-buildpackage)


Ho appena guardato la directory principale e sembra che non abbia creato quei file .deb in base alle date di modifica da ls -al. Non è riuscito a crearli a causa della verifica non riuscita del gpg, giusto? Significa con il tuo nuovo comando, dovrebbe crearli? O mi sbaglio?
meder omuraliev,

6

Quando crei una versione diversa di un pacchetto (come hai fatto, poiché hai modificato le regole di compilazione), dovresti davvero aggiungere una voce di log. In questo modo, il tuo pacchetto avrà un numero di versione diverso (quindi saprai immediatamente che non è il pacchetto standard dalla distribuzione) e avrai una traccia di ciò che hai cambiato.

Modifica debian/changeloge aggiungi una voce che imita il formato delle voci esistenti. Datalo da oggi e scegli un numero di versione like 0.7.67-3~bpo50+meder1(vuoi qualcosa per cui la dpkg --compare-versionstua versione sia più recente). Inserisci il tuo indirizzo e-mail come manutentore; in questo modo, hai una chiara indicazione che questo è un pacchetto che hai modificato e dpkg-buildpackagechiederai la tua passphrase GPG.

Se sei un utente Emacs, installa il dpkg-dev-elpacchetto e usa i comandi C-c C-ae C-c C-cper aggiungere e finalizzare la tua voce di registro.


5

Mentre la firma di un pacchetto non è necessaria e le -uc -usopzioni possono essere utilizzate per evitare tale passaggio, può anche essere utile firmare un pacchetto, soprattutto se altri lo useranno o lo invierai tramite percorsi di comunicazione non sicuri. E non è affatto difficile.

Per generare una buona firma, consultare la pagina man per dpkg-buildpackage . Di default firma i pacchetti con gpg. Dai messaggi di errore stampati, sembra che tu non abbia ancora generato una chiave gpg. Vedi ad esempio GnuPrivacyGuardHowto - Documentazione della comunità Ubuntu per alcune istruzioni e informazioni.

Come osserva @Gilles, dovresti anche cambiare il numero di versione del pacchetto tramite il file del log delle modifiche e fornire l'indirizzo e-mail per la chiave gpg che utilizzerai. Un modo semplice per farlo è semplicemente eseguire il dch --local foocomando, dove "pippo" è una parola chiave per la modifica. Se davvero non si vuole farlo, e necessità di specificare un indirizzo, o un tasto manutentore o uploader Nome / specifica diversa da utilizzare al momento della firma, si può anche utilizzare il -m, -eo -kl'opzione quando si costruisce.

Vedi Howto per ricostruire i pacchetti Debian per ulteriori suggerimenti.

La parte difficile arriva quando qualcuno sta cercando di decidere se un determinato pacchetto è firmato da qualcuno di cui si fidano. Dai un'occhiata alla rete PGP di fiducia per affrontare le sottili questioni coinvolte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.