J'ai couru dpkg-buildpackage
après avoir obtenu une apt-get source nginx
version backports de nginx et modifié debian/rules
pour inclure le module uwsgi. Les derniers résultats de la commande ont été:
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
Il se plaint que parce que je ne suis pas le mainteneur d'origine du package, ma clé ne correspond pas.
Est-ce vraiment nécessaire et si oui, comment puis-je utiliser mes clés pour faire la correspondance gpg?
ls -al
. Il n'a pas pu les créer en raison de l'échec de la vérification du gpg, non? C'est à dire avec votre nouvelle commande, ça devrait les créer? Ou je me trompe?Lorsque vous créez une version différente d'un package (comme vous l'avez fait, puisque vous avez modifié les règles de génération), vous devez vraiment ajouter une entrée de journal des modifications. De cette façon, votre package aura un numéro de version différent (vous saurez donc immédiatement qu'il ne s'agit pas du package standard de la distribution), et vous aurez une trace de ce que vous avez modifié.
Modifiez
debian/changelog
et ajoutez une entrée imitant le format des entrées existantes. Datez-le à partir d'aujourd'hui et choisissez un numéro de versionlike 0.7.67-3~bpo50+meder1
(vous voulez quelque chose pour lequeldpkg --compare-versions
votre version est plus récente). Mettez votre adresse e-mail en tant que mainteneur; De cette façon, vous avez une indication claire qu'il s'agit d'un package que vous avez modifié et vousdpkg-buildpackage
demanderez votre phrase de passe GPG.Si vous êtes un utilisateur Emacs, installez le
dpkg-dev-el
package et utilisez les commandesC-c C-a
etC-c C-c
pour ajouter et finaliser votre entrée de journal des modifications.la source
Bien que la signature d'un package ne soit pas nécessaire et que les
-uc -us
options puissent être utilisées pour éviter cette étape, il peut également être utile de signer un package, en particulier si d'autres l'utilisent ou que vous l'envoyez via des chemins de communication non sécurisés. Et ce n'est pas difficile du tout.Pour générer une bonne signature, consultez la page de manuel de dpkg-buildpackage . Par défaut, il signe les packages avec gpg. D'après les messages d'erreur qu'il a imprimés, il semble que vous n'aviez tout simplement pas encore généré de clé gpg. Voir par exemple GnuPrivacyGuardHowto - Documentation Ubuntu communautaire pour quelques instructions et informations de base.
Comme le note @Gilles, vous devez également modifier le numéro de version du package via le fichier journal des modifications et fournir l'adresse e-mail de la clé gpg que vous utiliserez. Un moyen facile de le faire est d'exécuter simplement la
dch --local foo
commande, où "foo" est un mot-clé pour le changement. Si vous ne voulez vraiment pas le faire et devez spécifier un nom / adresse de responsable ou de téléchargeur différent, ou une clé spécifique à utiliser lors de la signature, vous pouvez également utiliser l' option-m
,-e
ou-k
lors de la construction.Voir Comment reconstruire des paquets Debian pour plus de conseils.
La partie délicate survient lorsque quelqu'un essaie de décider si un paquet donné est signé par quelqu'un en qui il a confiance. Consultez le site Web de confiance PGP pour résoudre les problèmes subtils impliqués.
la source