debuild - секретный ключ недоступен (кто-то использует ключ)

Я пытаюсь построить Каир с Debuild.

Я дошел до конца и это сообщение:

gpg: skipped "Robert Ancell <robert.ancell@canonical.com>": 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
<stu.axon@gmail.com> uid                  Launchpad PPA for Stuart
Axon <stuaxo2@yahoo.com> sub   2048R/B8E8ED59 2015-01-28

и у меня есть env var:

DEBSIGN_KEYID=17F35B46

4 ответа

Решение

debuild запрашивает ключ пользователя, который последний раз редактировал журнал изменений. Если вы загружаете в PPA, ваш пакет должен отличаться от его аналога, который в настоящее время находится в репозиториях, и поэтому вы должны были отредактировать список изменений.

использование dch обновить версию и журнал изменений, затем пересобрать. Дебилд попросит ваш ключ. (Если вы не уверены, какие номера версий использовать, посмотрите справочные документы Launchpad.)

Использовать -k возможность рассказать debuild какой ключ использовать, например

debuild -kB57F5641

Обратите внимание, что между -k и идентификатор ключа.

В настоящее время я использую XUbuntu 16.04 "Xenial Xerus" и испытывал ту же проблему: оба debuild а также debsign возвращали этот секретный ключ: ошибка недоступна, хотя я создал локальный ключ и, кстати, загрузил его на сервер ключей Ubuntu.

Я уже пытался вручную установить ключ с помощью -k вариант. Я также установил свой ключ как ключ по умолчанию, и я также отредактировал debian/changelog файл, среди множества других вещей, но ничего не получалось: я все еще получал ту же ошибку.

... потом я понял, что создал ключ с помощью gpg2 вместо gpg. Угадай, что я сделал?

  • Сначала я открыл окно терминала оболочки и переименовал бинарный файл gpg:

    sudo mv /usr/bin/gpg /usr/bin/gpg.bak
    
  • Затем я создал gpg символическая ссылка, указывающая на gpg2 двоичная:

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

После того, как я сделал это, такие команды, как debuild -S -sa, debsign some-file_source.changes и так далее, наконец, сработало.

Я не знаю, что именно не так с debuild, debsign, dpkg-buildpackage и так далее, но у меня сложилось впечатление, что они отправляют параметры gpg хотя только gpg2 Можно разобрать ("понять") такие параметры. Следовательно, создание символической ссылки (для создания поддельного двоичного файла gpg, который фактически выполняет двоичный файл gpg2) решает проблему.

Есть более элегантные способы, чтобы заставить debsign использовать gpg2:

  • Задавать -pgpg2 вариант debsign,
  • Задавать DEBSIGN_PROGRAM=gpg2 в /etc/devscripts.conf или же ~/.devscripts,

Во-первых, с каждой версией пакета вы должны редактировать журнал изменений. Это требование, если вы вносите изменения в пакет; Вы можете добавить такие изменения с dch, как предполагает Сет.

Однако, если вы просто пытаетесь создать пакет, в котором нет дополнительных изменений, и вы можете просто установить пакет, вам не нужно редактировать журнал изменений, вам просто нужно решить проблему с ключом подписи.


Я не верю, что какой-либо из ответов здесь завершен на 100%. Поэтому я немного украду у обоих, но добавлю свое собственное предложение и решение здесь, как я делаю это с nginx пакет сливается довольно часто.

Цитировать Сета, debuild будет определять ключ на основе того, каким был последний редактор журнала изменений. Это происходит автоматически, и вам нужно будет обновить журнал изменений, чтобы использовать в них свои учетные данные в конце последней записи журнала изменений.


Как сказал Флориан, вы также можете использовать -kKEYIDNUM возможность debuild скажите ему, с каким ключом подписывать, и навязывайте использование этого ключа.


И теперь, мое решение обеих проблем, чтобы заставить вещи автоматически подписывать ключ, который я хочу подписать...

Долгое время я сталкивался с этой проблемой, когда мои старые жесткие диски умирали в моей предыдущей системе. Я не хотел редактировать changelog каждый раз, на самом деле, и при этом я действительно не хотел вручную передавать -k вариант каждый раз debuild,

Наконец, MOTU помогли мне решить проблему, явно указав, с каким ключом подписываться, познакомив меня с .devscripts, который debuild и другие вызывают переменные окружения с определенными в них вещами; это позволило мне добавить варианты, которые dpkg-buildpackage, который debuild звонки, всегда будут добавлять.

Итак, чтобы сделать -k опция работает автоматически для каждого debuild вы бежите, вы можете добавить это к вам ~/.devscripts файл, и автоматически добавьте -k вариант, вот так:

DEBUILD_DPKG_BUILDPACKAGE_OPTS="-kABCD1234"

Это сделает его постоянно добавленным к debuild опции; это также способ обеспечить использование вашего ключа для подписи.

Это помогает мне как для загрузок Ubuntu, так и для загрузок PPA.

Другие вопросы по тегам