¿Cómo puedo firmar correctamente un paquete que modifiqué y volví a compilar?

20

Ejecuté dpkg-buildpackagedespués de obtener una apt-get source nginxversión de backports de nginx y modificar debian/rulespara incluir el módulo uwsgi. Los últimos resultados del comando fueron:

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 <[email protected]>": 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

Se queja de que debido a que no soy el responsable original del paquete, mi clave no coincidía.

¿Es esto realmente necesario y, de ser así, cómo puedo hacer que use mis teclas para hacer la correspondencia gpg?

meder omuraliev
fuente

Respuestas:

32

Los paquetes Debian de firma de PGP no son necesarios si los creó para su propio uso privado. Es solo el método de autenticación común para los desarrolladores de Debian (oficiales) cuando cargan nuevos paquetes en la rama "inestable" de Debian.

Para evitar el mensaje de error simplemente use:

dpkg-buildpackage -uc -us

(vea también la página de manual de dpkg-buildpackage)

Signum
fuente
Acabo de mirar el directorio principal y parece que no creó esos archivos .deb basados ​​en las fechas de modificación ls -al. No pudo crearlos debido a la verificación fallida del gpg, ¿verdad? Es decir, con su nuevo comando, ¿debería crearlos? ¿O me equivoco?
meder omuraliev
6

Cuando crea una versión diferente de un paquete (como lo hizo, ya que cambió las reglas de compilación), realmente debería agregar una entrada de registro de cambios. De esa manera, su paquete tendrá un número de versión diferente (por lo que sabrá de inmediato que no es el paquete estándar de la distribución), y tendrá un rastro de lo que ha cambiado.

Edite debian/changelogy agregue una entrada que imite el formato de las entradas existentes. Feche a partir de hoy y elija un número de versión like 0.7.67-3~bpo50+meder1(desea algo para lo que dpkg --compare-versionsdice que su versión es más reciente) Pon tu dirección de correo electrónico como mantenedor; de esa manera, tiene una clara indicación de que este es un paquete que modificó, y dpkg-buildpackagele pedirá su frase de contraseña GPG.

Si es usuario de Emacs, instale el dpkg-dev-elpaquete y use los comandos C-c C-ay C-c C-cpara agregar y finalizar su entrada en el registro de cambios.

Gilles 'SO- deja de ser malvado'
fuente
5

Si bien no es necesario firmar un paquete, y las -uc -usopciones se pueden usar para evitar ese paso, también puede ser útil firmar un paquete, especialmente si otros lo usarán o lo enviarán a través de rutas de comunicación inseguras. Y no es difícil en absoluto.

Para generar una buena firma, consulte la página de manual de dpkg-buildpackage . Por defecto firma paquetes con gpg. Por los mensajes de error que imprimió, parece que simplemente no había generado una clave gpg todavía. Consulte, por ejemplo, GnuPrivacyGuardHowto - Documentación comunitaria de Ubuntu para obtener algunas instrucciones y antecedentes.

Como señala @Gilles, también debe cambiar el número de versión del paquete a través del archivo de registro de cambios y proporcionar la dirección de correo electrónico para la clave gpg que usará. Una manera fácil de hacerlo es simplemente ejecutar el dch --local foocomando, donde "foo" es una palabra clave para el cambio. Si realmente no quiere hacer eso, y la necesidad de especificar un mantenedor o cargador nombre de la dirección, o una clave diferente / específico que se utilizará cuando se firma, también se puede utilizar el -m, -eo -kla opción en la construcción.

Vea Cómo reconstruir paquetes Debian para más consejos.

La parte difícil viene cuando alguien está tratando de decidir si un paquete en particular está firmado por alguien en quien confía. Echa un vistazo a la red de confianza de PGP para lidiar con los problemas sutiles involucrados.

nealmcb
fuente