debuild - geheimer Schlüssel nicht verfügbar (jemand anderes Schlüssel)

7

Ich versuche Kairo mit Debuild zu bauen.

Ich komme zum Ende und diese Nachricht:

gpg: skipped "Robert Ancell <[email protected]>": secret key not available

Da ich nicht Robert Ancell bin, ist dies sinnvoll - wie kann ich meinen eigenen Schlüssel verwenden?

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

und ich habe env var:

DEBSIGN_KEYID=17F35B46
Stuart Axon
quelle
Welchen Debuild-Befehl haben Sie verwendet? Versuchen Sie, die -us -ucFlags hinzuzufügen .
Seth
Es funktioniert gut mit debuild -us -uc, aber ich denke, das ist für einen nicht signierten Build? Ich möchte meine eigene PPA erstellen, die meiner Meinung nach einen signierten Build benötigt (?) - also habe ich versucht, eine einfache zu verwenden debuild
Stuart Axon
Ja, das wäre nicht signiert. Wenn Sie versuchen, eine PPA zu erstellen, haben Sie vermutlich Änderungen an der Quelle vorgenommen. Wenn ja, warum haben Sie das Änderungsprotokoll nicht aktualisiert? (Debuild fragt nach dem Schlüssel des Benutzers des letzten Änderungsprotokolleintrags)
Seth
Danke - ich habe nicht aktualisiert, da ich nicht (nicht) wusste, was ich tue. - Ich denke, ich sollte verwenden dch -i, um die Version zu aktualisieren + das Änderungsprotokoll zu bearbeiten .. (?)
Stuart Axon
1
Ich würde. Sagen Sie einfach etwas Einfaches wie "Mit x Flags neu erstellen, um y zu reparieren". Informationen zur Versionsverwaltung finden Sie im Abschnitt zur Versionsverwaltung hier: help.launchpad.net/Packaging/PPA/BuildingASourcePackage . Da die Cairo-Dock-Version in den Repos 3.4.1-0ubuntu1 ist, sollte Ihre Version 3.4.1-0ubuntu1ppa1 sein.
Seth

Antworten:

8

debuild fragt nach dem Schlüssel des Benutzers, der das Änderungsprotokoll zuletzt bearbeitet hat. Wenn Sie auf eine PPA hochladen, muss sich Ihr Paket von dem Äquivalent unterscheiden, das sich derzeit in den Repositorys befindet. Daher sollten Sie das Änderungsprotokoll bearbeitet haben.

Verwenden Sie dchdiese Option, um die Version und das Änderungsprotokoll zu aktualisieren und anschließend neu zu erstellen. debuild wird nach deinem Schlüssel fragen. (Wenn Sie sich nicht sicher sind, welche Versionsnummern Sie verwenden sollen, lesen Sie die Launchpad-Hilfedokumente. )

Seth
quelle
Ticked, da dies mein Problem war, hat das andere für Details aufgewertet - ich bin mir nicht sicher, wie ich in dieser seltsamen, spielerischen Welt fair Punkte vergeben soll.
Stuart Axon
6

Ich bin derzeit mit Xubuntu 16.04 „Xenial Xerus“ und wurde das gleiche Problem auftritt: beide debuildund debsignwurden diese Rückkehr geheimen Schlüssel nicht verfügbar Fehler, obwohl ich einen lokalen Schlüssel erzeugen tat und durch die Art , wie ich es in die hochgeladen hatte Ubuntu Keyserver auch .

Ich hatte bereits versucht, meinen Schlüssel mithilfe der -kOption manuell festzulegen. Ich habe auch meinen Schlüssel als Standardschlüssel festgelegt und debian/changelogunter anderem die Datei bearbeitet , aber nichts hat funktioniert: Ich habe immer noch den gleichen Fehler erhalten.

... dann wurde mir klar, dass ich meinen Schlüssel mit gpg2 anstelle von gpg erstellt hatte . Rate was ich getan habe?

  • Zuerst habe ich ein Shell-Terminalfenster geöffnet und die gpg-Binärdatei umbenannt:

    sudo mv /usr/bin/gpg /usr/bin/gpg.bak
    
  • Dann habe ich einen gpgsymbolischen Link erstellt, der auf die gpg2Binärdatei verweist :

    sudo ln -s /usr/bin/gpg2 /usr/bin/gpg
    

Nachdem ich dies tat, Befehle wie debuild -S -sa, debsign some-file_source.changeset cetera schließlich arbeitete.

Ich weiß nicht genau, was falsch debuildist debsign, dpkg-buildpackageusw., aber ich habe den Eindruck, dass sie Parameter senden, gpgobwohl sie nur gpg2solche Parameter analysieren ("verstehen") können. Daher löst das Herstellen einer symbolischen Verknüpfung (um eine gefälschte gpg-Binärdatei zu erstellen, auf der die gpg2-Binärdatei tatsächlich ausgeführt wird) das Problem.

Es gibt jedoch elegantere Möglichkeiten, debsigndie Verwendung zu erzwingen gpg2:

  • Set -pgpg2Option debsign.
  • Setzen Sie DEBSIGN_PROGRAM=gpg2in /etc/devscripts.confoder ~/.devscripts.
Yuri Sucupira
quelle
Diese Antwort ist Ass ... jetzt - wo machen wir Fehlerberichte dazu? Ich gehe davon aus, dass dies funktioniert, wenn Sie anstelle eines Symlinks Debuild und Debsign ändern, um auf gpg2 anstatt auf gpg zu zeigen. - Dann waren einige Wege in Richtung eines Patches ...
Stuart Axon
@StuartAxon debuildund debsignsind Teil des devscripts- Pakets, während dpkg-buildpackagees Teil des dpkg-dev- Pakets ist. In Ubuntu-Distributionen werden sowohl devscripts als auch dpkg-dev von Ubuntu-Entwicklern <[email protected]> verwaltet. Eine gute Möglichkeit, Fehler in diesen Paketen zu melden, besteht darin, apport: auszuführen apport-bug devscripts, um einen Fehler zu erstellen Bericht für Devskripte auf Launchpad und apport-bug dpkg-devdasselbe für dpkg-dev auf Launchpad.
Yuri Sucupira
Ich danke dir sehr! Ich habe einen Tag lang versucht, genau das gleiche Problem zu lösen, bin aber nur auf Antworten gestoßen, die darauf hindeuten, einen neuen Schlüssel zu generieren. Ich mit der Welt wanderte zu gpg2 und grub schließlich gpg.
Alexander Solovets
@ AlexanderSolovets Gern geschehen. :) Und danke für deine vorgeschlagene Bearbeitung. :)
Yuri Sucupira
5

Verwenden Sie die -kOption, um anzugeben, debuildwelcher Schlüssel verwendet werden soll, z

debuild -kB57F5641

Beachten Sie, dass zwischen der -kund der Schlüssel-ID kein Leerzeichen zulässig ist .

Florian Diesch
quelle
3

Zunächst müssen Sie bei jeder Paketrevision das Änderungsprotokoll bearbeiten. Dies ist eine Voraussetzung, wenn Sie Änderungen am Paket vornehmen. Sie können solche Änderungsprotokolle mit hinzufügen dch, wie Seth vorschlägt.

Wenn Sie jedoch nur versuchen, ein Paket zu erstellen, das keine zusätzlichen Änderungen enthält , sodass Sie das Paket einfach installieren können, müssen Sie das Änderungsprotokoll nicht bearbeiten, sondern lediglich das Problem mit dem Signaturschlüssel beheben.


Ich glaube nicht, dass eine der Antworten hier zu 100% vollständig ist. Daher werde ich etwas von beiden stehlen, aber hier meinen eigenen Vorschlag und meine eigene Lösung hinzufügen, da ich dies mit den nginxPaketzusammenführungen ziemlich oft mache .

Um Seth zu zitieren, debuildwird der Schlüssel basierend auf dem letzten Änderungsprotokoll-Editor bestimmt. Dies erfolgt automatisch, und Sie müssen das Änderungsprotokoll aktualisieren, um Ihre Anmeldeinformationen am Ende des letzten Änderungsprotokolleintrags darin zu verwenden.


Wie von Florian angegeben, können Sie jedoch auch die -kKEYIDNUMOption verwenden, debuildum anzugeben, mit welchem ​​Schlüssel signiert werden soll, und die Verwendung dieses Schlüssels erzwingen.


Und jetzt meine Lösung für beide Probleme, Dinge automatisch mit dem Schlüssel signieren zu lassen, mit dem ich signieren möchte ...

Am längsten stieß ich auf dieses Problem, wenn meine alten Festplatten auf meinem vorherigen System ausfielen. Ich wollte das nicht changelogjedes Mal wirklich bearbeiten , noch wollte ich die -kOption wirklich jedes Mal manuell an übergeben debuild.

Schließlich halfen mir MOTUs, das Problem zu lösen, indem sie explizit spezifizierten, mit welchem ​​Schlüssel signiert werden soll, indem sie mich vorstellten .devscripts, welche debuildund andere Umgebungsvariablen mit darin definierten Dingen aufrufen; Dadurch konnte ich Optionen hinzufügen dpkg-buildpackage, die bei debuildAnrufen immer angehängt werden.

Damit die -kOption für jede einzelne Ausführung automatisch funktioniert debuild, können Sie diese zu Ihrer ~/.devscriptsDatei hinzufügen und die -kOption automatisch wie folgt hinzufügen :

DEBUILD_DPKG_BUILDPACKAGE_OPTS="-kABCD1234"

Dadurch wird es dauerhaft zu den debuildOptionen hinzugefügt . Auf diese Weise können Sie auch sicherstellen, dass Ihr Schlüssel immer zum Signieren verwendet wird.

Dies hilft mir sowohl bei Ubuntu-Uploads als auch bei PPA-Uploads.

Thomas Ward
quelle