Wie kann ich ein Paket, das ich geändert und neu kompiliert habe, ordnungsgemäß signieren?

20

Ich lief, dpkg-buildpackagenachdem ich eine apt-get source nginxBackports-Version von nginx erhalten und debian/rulesdas uwsgi-Modul hinzugefügt hatte. Die letzten Ergebnisse des Befehls waren:

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

Es wird beanstandet, dass mein Schlüssel nicht übereinstimmt, da ich nicht der ursprüngliche Betreuer des Pakets bin.

Ist das wirklich notwendig und wenn ja, wie kann ich dafür sorgen, dass meine Schlüssel für den GPG-Abgleich verwendet werden?

meder omuraliev
quelle

Antworten:

32

PGP-signierte Debian-Pakete sind nicht erforderlich, wenn Sie sie für den privaten Gebrauch erstellen. Es ist nur die übliche Authentifizierungsmethode für (offizielle) Debian-Entwickler, wenn sie neue Pakete in den "unstable" -Zweig von Debian hochladen.

Um die Fehlermeldung zu vermeiden, verwenden Sie einfach:

dpkg-buildpackage -uc -us

(siehe auch die manpage von dpkg-buildpackage)

Signum
quelle
Ich habe mir gerade das übergeordnete Verzeichnis angesehen und es scheint, dass diese .deb-Dateien basierend auf den Änderungsdaten von nicht erstellt wurden ls -al. Es konnte sie nicht erstellen, weil die Überprüfung des GPG fehlgeschlagen ist, oder? Das heißt, mit Ihrem neuen Befehl sollte es sie erstellen? Oder irre ich mich?
Meder Omuraliev
6

Wenn Sie eine andere Version eines Pakets erstellen (wie Sie es getan haben, da Sie die Erstellungsregeln geändert haben), sollten Sie wirklich einen Changelog-Eintrag hinzufügen. Auf diese Weise hat Ihr Paket eine andere Versionsnummer (sodass Sie sofort wissen, dass es sich nicht um das Standardpaket aus der Distribution handelt), und Sie haben eine Spur dessen, was Sie geändert haben.

Bearbeiten debian/changelogund fügen Sie einen Eintrag hinzu, der das Format vorhandener Einträge imitiert. Nehmen Sie das Datum von heute an und wählen Sie eine Versionsnummer like 0.7.67-3~bpo50+meder1(Sie möchten etwas, das dpkg --compare-versionsbesagt, dass Ihre Version aktueller ist). Geben Sie Ihre E-Mail-Adresse als Betreuer an. Auf diese Weise haben Sie einen klaren Hinweis darauf, dass es sich um ein von Ihnen geändertes Paket handelt, und dpkg-buildpackagewerden nach Ihrer GPG-Passphrase gefragt.

Wenn Sie ein Emacs - Nutzer sind, installieren Sie das dpkg-dev-elPaket, und verwenden Sie die C-c C-aund C-c C-cBefehle Ihre Changelog - Eintrag hinzuzufügen und abzuschließen.

Gilles 'SO - hör auf böse zu sein'
quelle
5

Während das Signieren eines Pakets nicht erforderlich ist und die -uc -usOptionen verwendet werden können, um diesen Schritt zu vermeiden, kann es auch hilfreich sein, ein Paket zu signieren, insbesondere wenn andere es verwenden oder Sie es über unsichere Kommunikationspfade senden. Und es ist überhaupt nicht schwer.

Informationen zum Generieren einer guten Signatur finden Sie auf der Manpage für dpkg-buildpackage . Standardmäßig signiert es Pakete mit gpg. Aus den Fehlermeldungen geht hervor, dass Sie noch keinen gpg-Schlüssel generiert haben. Anweisungen und Hintergrundinformationen finden Sie z. B. in der Dokumentation zu GnuPrivacyGuardHowto - Community Ubuntu .

Wie @Gilles bemerkt, sollten Sie auch die Versionsnummer des Pakets über die Changelog-Datei ändern und die E-Mail-Adresse für den von Ihnen verwendeten gpg-Schlüssel angeben. Eine einfache Möglichkeit besteht darin, einfach den dch --local fooBefehl auszuführen , wobei "foo" ein Schlüsselwort für die Änderung ist. Wenn Sie dies wirklich nicht tun möchten und einen anderen Betreuer oder Uploader-Namen / eine andere Adresse oder einen bestimmten Schlüssel zum Signieren angeben müssen, können Sie beim Erstellen auch die Option -m, -eoder -kverwenden.

Weitere Tipps finden Sie unter Howto zum Neuerstellen von Debian-Paketen .

Der knifflige Teil entsteht, wenn jemand versucht zu entscheiden, ob ein bestimmtes Paket von jemandem signiert ist, dem er vertraut. Schauen Sie sich das PGP-Web of Trust an, um die subtilen Probleme zu lösen.

Nealmcb
quelle