Как правильно подписать пакет, который я изменил и перекомпилировал?


20

Я побежал 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?

Ответы:


32

PGP-подписывание пакетов Debian не требуется, если вы собрали их для личного использования. Это просто обычный метод аутентификации для (официальных) разработчиков Debian, когда они загружают новые пакеты в ветку «нестабильную» Debian.

Чтобы избежать сообщения об ошибке, просто используйте:

dpkg-buildpackage -uc -us

(см. также справочную страницу dpkg-buildpackage)


Я только что посмотрел на родительский каталог, и кажется, что он не создал эти файлы .deb на основе дат модификации ls -al. Не удалось их создать из-за неудачной проверки gpg, верно? То есть с вашей новой командой они должны их создавать? Или я ошибаюсь?
meder omuraliev

6

Когда вы создаете другую версию пакета (как вы сделали, так как вы изменили правила сборки), вы действительно должны добавить запись в журнал изменений. Таким образом, ваш пакет будет иметь другой номер версии (так что вы сразу поймете, что это не стандартный пакет из дистрибутива), и вы увидите, что вы изменили.

Отредактируйте 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команды для добавления и завершить свой журнал изменений записи.


5

Хотя подписывать пакет не нужно, и -uc -usпараметры можно использовать, чтобы избежать этого шага, также может быть полезно подписать пакет, особенно если его будут использовать другие, или вы будете отправлять его по незащищенным каналам связи. И это совсем не сложно.

Чтобы создать хорошую подпись, см. Справочную страницу для dpkg-buildpackage . По умолчанию он подписывает пакеты с помощью gpg. Судя по сообщениям об ошибках, которые вы напечатали, вы просто еще не сгенерировали ключ gpg. Смотрите, например, GnuPrivacyGuardHowto - Документация сообщества Ubuntu для получения некоторых инструкций и справочной информации.

Как отмечает @Gilles, вы также должны изменить номер версии пакета через файл журнала изменений и указать адрес электронной почты для ключа gpg, который вы будете использовать. Самый простой способ сделать это - просто запустить dch --local fooкоманду, где «foo» является ключевым словом для изменения. Если вы действительно не хотите этого делать и вам нужно указать другое имя / адрес сопровождающего или загрузчика или конкретный ключ, который будет использоваться при подписании, вы также можете использовать опцию -m, -eили, -kпри сборке.

Смотрите Howto для перекомпоновки пакетов Debian для получения дополнительных советов.

Сложная ситуация возникает, когда кто-то пытается решить, подписан ли данный пакет кем-то, кому он доверяет. Проверьте сеть доверия PGP для решения тонких проблем.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.