web-dev-qa-db-ja.com

debuild-秘密鍵は利用できません(他の人の鍵)

Deiroでcairoをビルドしようとしています。

最後にこのメッセージが表示されます。

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

私はロバート・アンセルではないので、これは理にかなっています-自分のキーを使用するにはどうすればよいですか?

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

そして、私はenv varを持っています:

DEBSIGN_KEYID=17F35B46
7
Stuart Axon

debuildは、変更ログを最後に編集したユーザーのキーを要求します。 PPAにアップロードする場合、パッケージは現在リポジトリにある同等のものと異なる必要があるため、変更ログを編集する必要があります。

dchを使用してバージョンと変更ログを更新し、再構築します。 debuildはキーを要求します。 (使用するバージョン番号がわからない場合は、ご覧ください Launchpadヘルプドキュメントで

8
Seth

私は現在XUbuntu 16.04 "Xenial Xerus"を使用していますが、同じ問題が発生していました。debuilddebsignの両方がこのsecret key not availableエラーを返していました。 buntu Keyserver にもアップロードした方法。

-kオプションを使用して、キーを手動で設定しようとしました。キーをデフォルトキーとして設定し、debian/changelogファイルも編集しましたが、他にもたくさんありましたが、何も機能しませんでした。同じエラーが引き続き発生していました。

...その後、gpgではなくgpg2でキーを作成したことに気付きました。私が何をしたと思いますか?

  • まず、シェルターミナルウィンドウを開き、gpgバイナリの名前を変更しました。

    Sudo mv /usr/bin/gpg /usr/bin/gpg.bak
    
  • 次に、gpg2バイナリを指すgpgシンボリックリンクを作成しました。

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

これを行った後、debuild -S -sadebsign some-file_source.changesなどのコマンドが最終的に機能しました。

debuilddebsigndpkg-buildpackageなどの正確な問題点はわかりませんが、_gpg2のみが解析(「理解」)できるにもかかわらず、gpgにパラメーターを送信しているという印象を受けています。 )そのようなパラメーター。したがって、(実際にgpg2バイナリを実行する偽のgpgバイナリを作成するために)シンボリックリンクを作成すると、問題が解決します。

ただし、debsigngpg2を使用させるよりエレガントな方法があります。

  • debsign-pgpg2オプションを設定します。
  • DEBSIGN_PROGRAM=gpg2または/etc/devscripts.conf~/.devscriptsを設定します。
6
Yuri Sucupira

-kオプションを使用して、使用するキーをdebuildに伝えます。

debuild -kB57F5641

-kとキーIDの間にはスペースを入れないでください。

5
Florian Diesch

まず、パッケージのリビジョンごとに、変更ログを編集する必要があります。これは、パッケージに変更を加える場合の要件です。 Sethが提案するように、dchを使用してこのような変更ログを追加できます。

ただし、単に追加の変更はありませんのパッケージを作成しようとしている場合、パッケージをインストールするだけで、変更ログを編集する必要はなく、単に署名を解決するだけです重要な問題。


ここでの答えのいずれかが100%完全であるとは思わない。したがって、私は両方から少し盗みますが、nginxパッケージが非常に頻繁にマージされるため、ここに独自の提案と解決策を追加します。

Sethを引用するには、debuildは、最後の変更ログエディターが何であったかに基づいてキーを決定します。これは自動的に行われ、最新の変更ログエントリの最後に変更ログで資格情報を使用するように変更ログを更新する必要があります。


ただし、Florianが述べたように、-kKEYIDNUMオプションを使用してdebuildに署名するキーを指示し、そのキーの使用を強制することもできます。


そして今、両方の問題に対する私の解決策は、私が署名したいキーで自動的に署名することです...

私の以前のシステムで古いハードドライブが死んだときはいつでも、この問題に長い間遭遇しました。 changelogを毎回編集したくはありませんでしたし、毎回debuildに手動で-kオプションを渡したくもありませんでした。

最後に、MOTUは、署名するキーを明示的に指定し、.devscriptsを紹介することで問題を解決するのに役立ちました。debuildなどは、環境変数で定義されたものを呼び出します。これにより、debuildが呼び出すdpkg-buildpackageが常に追加するオプションを追加できました。

したがって、実行するすべてのdebuildに対して-kオプションを自動的に機能させるには、これを~/.devscriptsファイルに追加し、-kオプションを自動的に追加します。 :

DEBUILD_DPKG_BUILDPACKAGE_OPTS="-kABCD1234"

これにより、debuildオプションに永続的に追加されます。これは、キーが常に署名に使用されることを強制する方法でもあります。

これは、Ubuntuの両方のアップロードに役立ちますが、PPAのアップロードにも役立ちます。

3
Thomas Ward