J'essaie de construire le Caire avec debuild.
J'arrive à la fin et à ce message:
gpg: skipped "Robert Ancell <[email protected]>": secret key not available
Puisque je ne suis pas Robert Ancell, cela a du sens - comment puis-je lui faire utiliser ma propre clé?
gpg --list-key outputs:
$ gpg --list-key /home/stu/.gnupg/pubring.gpg
----------------------------
pub 1024R/2ADA7053 2009-05-04 uid Launchpad PPA for Aleksander Morgado
pub 2048R/17F35B46 2015-01-28 uid Stuart Axon
<[email protected]> uid Launchpad PPA for Stuart
Axon <[email protected]> sub 2048R/B8E8ED59 2015-01-28
et j'ai env var:
DEBSIGN_KEYID=17F35B46
debuild demande la clé du dernier utilisateur qui a édité le journal des modifications. Si vous téléchargez sur un PPA, votre paquet doit être différent de son équivalent actuellement dans les référentiels et vous devez donc avoir modifié le journal des modifications.
Utilisez dch
pour mettre à jour la version et le journal des modifications, puis reconstruisez-le. debuild vous demandera votre clé. (Si vous n'êtes pas sûr des numéros de version à utiliser, jetez un œil à dans la documentation d'aide du Launchpad. )
J'utilise actuellement XUbuntu 16.04 "Xenial Xerus" et je rencontrais le même problème: debuild
et debsign
renvoyaient cette clé secrète non disponible , bien que j’ai créé une clé locale et que, d’ailleurs, je l’ai téléchargée sur le buntu Keyserver ,.
J'avais déjà essayé de définir manuellement ma clé en utilisant l'option -k
. J'ai également défini ma clé comme clé par défaut et j'ai également édité le fichier debian/changelog
, parmi BEAUCOUP d'autres choses, mais rien n'a fonctionné: je recevais toujours la même erreur.
... alors j'ai réalisé que j'avais créé ma clé avec gpg2 au lieu de gpg . Devine ce que j'ai fait?
Tout d'abord, j'ai ouvert une fenêtre de terminal Shell et renommé le binaire gpg:
Sudo mv /usr/bin/gpg /usr/bin/gpg.bak
Ensuite, j'ai créé un lien symbolique gpg
pointant vers le binaire gpg2
:
Sudo ln -s /usr/bin/gpg2 /usr/bin/gpg
Après cela, des commandes telles que debuild -S -sa
, debsign some-file_source.changes
et cetera ont finalement fonctionné.
Je ne sais pas ce qui ne va pas avec debuild
, debsign
, dpkg-buildpackage
et cetera, mais j'ai l'impression qu'ils envoient des paramètres à gpg
bien que seul gpg2
peut analyser ("comprendre") de tels paramètres. Par conséquent, créer un lien symbolique (afin de créer un faux binaire gpg exécutant le binaire gpg2) résout le problème.
Il existe cependant des manières plus élégantes de forcer debsign
à utiliser gpg2
:
-pgpg2
de debsign
.DEBSIGN_PROGRAM=gpg2
dans /etc/devscripts.conf
ou ~/.devscripts
.Utilisez l’option -k
pour indiquer à debuild
la touche à utiliser, par exemple.
debuild -kB57F5641
Notez qu'il n'y a pas d'espace alloué entre -k
et l'ID de clé.
Tout d'abord, avec chaque révision de paquet, vous devez éditer le journal des modifications. Ceci est obligatoire si vous apportez des modifications au package. vous pouvez ajouter de tels changelogs avec dch
, comme le suggère Seth.
Cependant, si vous essayez simplement de produire un paquet qui n'a pas de modifications supplémentaires, vous pouvez donc simplement installer le paquet, vous n'avez pas besoin de modifier le journal des modifications, vous devez simplement résoudre la signature. problème clé.
Je ne crois pas qu'aucune des réponses ne soit complète à 100%. Par conséquent, je vais voler un peu des deux, mais ajouter ma propre suggestion et solution ici, comme je le fais avec le paquet
nginx
qui fusionne assez souvent.
Pour citer Seth, debuild
déterminera la clé en fonction du dernier éditeur de journal des modifications. Ceci est automatique et vous devrez mettre à jour le journal des modifications pour pouvoir utiliser vos informations d'identification à la fin de la dernière entrée du journal des modifications.
Cependant, comme Florian l’a déclaré, vous pouvez également utiliser l’option -kKEYIDNUM
pour debuild
lui indiquer la clé à signer et appliquer l’utilisation de cette clé.
Et maintenant, ma solution aux deux problèmes, pour faire signer automatiquement les choses avec la clé, je veux signer avec ...
Pendant très longtemps, je me suis heurté à ce problème chaque fois que mes anciens disques durs sont morts sur mon ancien système. Je ne voulais vraiment pas éditer la changelog
à chaque fois, ni vraiment passer manuellement l'option -k
à debuild
.
Enfin, les MOTU m'ont aidé à résoudre le problème en spécifiant explicitement la clé avec laquelle signer, en me présentant .devscripts
, qui debuild
et d'autres font appel à des variables d'environnement contenant des éléments définis; cela m'a permis d'ajouter des options que dpkg-buildpackage
, qui appelle debuild
, sera toujours ajouté.
Donc, pour que l'option -k
fonctionne automatiquement pour chaque debuild
que vous exécutez, vous pouvez l'ajouter à votre fichier ~/.devscripts
et ajouter automatiquement l'option -k
, comme ceci :
DEBUILD_DPKG_BUILDPACKAGE_OPTS="-kABCD1234"
Cela le rendra ajouté de manière persistante aux options debuild
; C'est également un moyen de faire en sorte que votre clé soit toujours utilisée pour la signature.
Cela m'aide à la fois pour les envois Ubuntu, mais aussi pour les envois PPA.