Как правильно подписать пакет, который я изменил и перекомпилировал?
Я побежал 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 <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?
3 ответа
PGP-подписывание пакетов Debian не требуется, если вы собрали их для личного использования. Это просто обычный метод аутентификации для (официальных) разработчиков Debian, когда они загружают новые пакеты в ветку "нестабильную" Debian.
Чтобы избежать сообщения об ошибке, просто используйте:
dpkg-buildpackage -uc -us
(см. также справочную страницу dpkg-buildpackage)
Когда вы создаете другую версию пакета (как вы сделали, так как вы изменили правила сборки), вы действительно должны добавить запись в журнал изменений. Таким образом, ваш пакет будет иметь другой номер версии (так что вы сразу поймете, что это не стандартный пакет из дистрибутива), и вы увидите, что вы изменили.
редактировать 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 - Документация сообщества Ubuntu для получения некоторых инструкций и справочной информации.
Как отмечает @Gilles, вы также должны изменить номер версии пакета через файл журнала изменений и указать адрес электронной почты для ключа gpg, который вы будете использовать. Простой способ сделать это - просто запустить dch --local foo
команда, где "foo" является ключевым словом для изменения. Если вы действительно не хотите этого делать, и вам нужно указать другое имя / адрес сопровождающего или загрузчика или конкретный ключ, который будет использоваться при подписании, вы также можете использовать -m
, -e
или же -k
вариант при строительстве.
Смотрите Howto для перекомпоновки пакетов Debian для получения дополнительных советов.
Сложная ситуация возникает, когда кто-то пытается решить, подписан ли данный пакет кем-то, кому он доверяет. Проверьте сеть доверия PGP для решения тонких проблем.