Як я можу правильно підписати змінений і перекомпільований пакет?


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

Пакети Debian, що підписують PGP, не потрібні, якщо ви створили їх для власного користування. Це просто загальний метод аутентифікації для (офіційних) розробників 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варіант , коли будівництво.

Див. Як відновити пакети Debian для отримання додаткових порад.

Хитра частина виникає, коли хтось намагається вирішити, чи підписаний пакет хтось, кому він довіряє. Перевірте мережу довіри PGP, щоб вирішити найтонші проблеми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.