Я побежал dpkg-buildpackage
после получения apt-get source nginx
версии backports 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?
Пакеты Debian с подписью PGP не нужны, если вы создали их для личного использования. Это обычный метод аутентификации для (официальных) разработчиков 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
command, где "foo" - ключевое слово для изменения. Если вы действительно не хотите этого делать и вам нужно указать другое имя / адрес сопровождающего или загрузчика, или конкретный ключ, который будет использоваться при подписании, вы также можете использовать -m
, -e
или -k
вариант при постройке.
Видеть Как пересобрать пакеты Debian для получения дополнительных советов.
Сложность возникает, когда кто-то пытается решить, подписан ли данный пакет тем, кому он доверяет. Загляните в сеть доверия PGP, чтобы разобраться с тонкими проблемами.