Как решить проблему с исходным кодом dpkg при сборке пакета?

16

Кто-нибудь здесь имел опыт создания пакета Debian / Ubuntu? Я пытаюсь перенести пакет с лампами ( http://packages.ubuntu.com/quantal/lammps ) из Ubuntu 12.10 (Quantal) в Ubuntu 12.04

Мне это нужно только неофициально - просто нужен пакет .deb для удобства при создании пользовательских образов виртуальных машин для развертывания на платформе IaaS.

Следуя Руководству по пакетированию Ubuntu по адресу https://wiki.ubuntu.com/PackagingGuide , я могу выполнить сборку успешно, кроме случаев, когда я пытаюсь перестроить с помощью команды debuild , я обычно получаю эту ошибку:

 dpkg-source: error: aborting due to unexpected upstream changes, see
 /tmp/lammps_0~20120615.gite442279-1.diff.aie32n dpkg-source: info: you
 can integrate the local changes with dpkg-source --commit
 dpkg-buildpackage: error: dpkg-source --include-binaries -i -b
 lammps-0~20120615.gite442279 gave error exit status 2

Запуск 'make clean-all' в каталоге src по-прежнему не решает проблему. Есть ли способ полностью очистить все файлы, которые были сгенерированы во время процесса сборки, или попросить debuild игнорировать любые различия в исходных файлах?

hanxue
источник

Ответы:

6

Это означает, что вы применили изменения к распакованному исходному источнику, которые не являются частью исправления в debian/patches/каталоге или перечислены там в seriesфайле, если они есть; и / или имеется некоторое несоответствие в состоянии применения заплаток quilt.

Просмотр упомянутого файла в / tmp покажет вам изменения, о которых идет речь.

Добей
источник
Большое спасибо за быстрый ответ! Есть ли быстрый способ восстановить изменения, сделанные с помощью команды 'make', вместо удаления всех записей изменений в файле / tmp / * diff *?
Hanxue
29

Избегайте бюрократии Debian, просто создав двоичный файл: dpkg-buildpackage -b

Хендри
источник
1
Это не так полезно, если вы собираетесь загружать в Debian.
Иеремия
4
@jeremiah, но очень полезно, если вы настраиваете пакет Debian для личного использования.
Wyatt8740
10

измените формат в debian / source / format с 3.0 (quilt) на 3.0 (native), если вы не хотите использовать quilt. Это решило проблему для меня в любом случае.

xtrade
источник
ЭТО! Одеяло невозможно.
Джей _silly_evarlast_ Рен
1
Я наивно следил за этим комментарием как есть. Чистым эффектом будет то, что ваша сборка больше не будет использовать патчи в debian / patches. Не могли бы вы расширить ответ, объяснив, как вы добавляете необходимую магию в debian / rules для фактического применения исправлений?
Томас Вандер Стичеле
1

Я видел эту проблему, когда quilt неправильно думал, что применил исправления к своей рабочей копии (текущий статус вы можете найти в папке .pc). Исправление в этом случае состояло в том, чтобы заставить лоскутное одеяло вытолкнуть все патчи quilt pop -a -f.

Стефан ван дер Уолт
источник
0

Это может произойти, если вы выполнили все «бумажные работы» в Debian, но случайно у вас остались артефакты от предыдущих попыток. В частности, автоматически генерируются изменения в «config.sub», «config.guess» и «Makefile».

Вы можете поместить это в debian / source / options:

# Don't store changes on autogenerated files
extend-diff-ignore = "(^|/)(config\.sub|config\.guess|Makefile)$"

Ссылка: https://raphaelhertzog.com/2011/01/28/3-ways-to-not-clutter-your-debian-source-package-with-autogenerated-files/

Стефан Гурихон
источник