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.