web-dev-qa-db-ja.com

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

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

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

私はパッケージの最初のメンテナーではないため、私のキーが一致しなかったと不満を述べています。

これは本当に必要ですか?必要な場合、キーを使用してgpgマッチングを実行するにはどうすればよいですか?

21
meder omuraliev

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

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

dpkg-buildpackage -uc -us

(dpkg-buildpackageのマンページも参照)

33
Signum

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

編集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コマンドを使用して、変更ログエントリを追加および確定します。

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

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

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

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

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

5
nealmcb