変更して再コンパイルしたパッケージに適切に署名するにはどうすればよいですか?


20

私は、nginxのバックポートバージョンをdpkg-buildpackage取得し、uwsgiモジュールを含めるapt-get source nginxように変更debian/rulesした後に実行しました。コマンドの最後の結果は次のとおりです。

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 <paravoid@debian.org>": 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

私はパッケージの元々のメンテナーではないため、キーが一致しなかったと文句を言います。

これは本当に必要ですか?その場合、どうすればキーを使用してgpgマッチングを行うことができますか?

回答:


32

プライベートで使用するためにビルドした場合、PGP署名のDebianパッケージは必要ありません。これは、Debianの「不安定な」ブランチに新しいパッケージをアップロードするときの(公式)Debian開発者の一般的な認証方法です。

エラーメッセージを回避するには、次を使用します。

dpkg-buildpackage -uc -us

(dpkg-buildpackageのマンページも参照してください)


親ディレクトリを調べたところ、からの変更日に基づいて.debファイルを作成しなかったようですls -al。gpgの検証に失敗したため、作成に失敗しましたか?新しいコマンドの意味は、それらを作成する必要がありますか?または私は間違っていますか?
メダーオムラリエフ

6

パッケージの別のバージョンを作成するとき(ビルドルールを変更したために行ったように)、実際に変更ログエントリを追加する必要があります。そうすれば、パッケージには異なるバージョン番号が付けられ(したがって、ディストリビューションの標準パッケージではないことがすぐにわかります)、変更内容のトレースが得られます。

編集しdebian/changelog、既存のエントリの形式を模倣するエントリを追加します。今日から日付を付けて、バージョン番号を選択します(バージョンが新しいlike 0.7.67-3~bpo50+meder1ことを示すものが必要ですdpkg --compare-versions)。あなたのメールアドレスをメンテナーとして入力してください。そうすれば、これが変更したパッケージであることが明確に示さdpkg-buildpackageれ、GPGパスフレーズが要求されます。

Emacsユーザーの場合は、dpkg-dev-elパッケージをインストールし、C-c C-aおよびC-c C-cコマンドを使用して、変更ログエントリを追加および確定します。


5

パッケージに署名する必要はありませんが、-uc -usそのステップを回避するためにオプションを使用できますが、特に他の人がパッケージを使用する場合、または安全でない通信パスを介して送信する場合は、パッケージに署名することも役立ちます。そして、それはまったく難しくありません。

適切な署名を生成するには、dpkg-buildpackageのmanページを参照してください。デフォルトでは、gpgでパッケージに署名します。表示されたエラーメッセージから、gpgキーをまだ生成していないようです。いくつかの手順と背景については、例えばGnuPrivacyGuardHowto-Community Ubuntu Documentationを参照してください。

@Gillesが指摘しているように、changelogファイルを使用してパッケージのバージョン番号を変更し、使用するgpgキーの電子メールアドレスを提供する必要があります。それを行う簡単な方法は、単に実行することですdch --local fooコマンドをすることです。「foo」は変更のキーワードです。本当にそれをしたくなく、異なるメンテナーまたはアップローダーの名前/アドレス、または署名時に使用する特定のキーを指定する必要がある場合は-m、ビルド時に、-eまたは-kオプションを使用することもできます。

その他のヒントについては、Debianパッケージを再構築する方法をご覧ください。

トリッキーな部分は、特定のパッケージが信頼する誰かによって署名されているかどうかを誰かが判断しようとするときに発生します。PGPの信頼の網を調べて、関係する微妙な問題に対処してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.