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

Кто-нибудь здесь имел опыт создания пакета 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 игнорировать любые различия в исходных файлах?

8 ответов

Решение

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

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

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

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

@ Томас Вандер Стихеле

Я нашел обходной путь, который использует сгенерированный временный файл в качестве патча: https://www.theo-andreou.org/?p=1112

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

Это может произойти, если вы выполнили всю "бумажную работу" 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/

https://manpages.debian.org/jessie/debhelper/dh_clean.1.en.html

Configure часто изменяет исходное дерево, вы можете перечислить эти файлы в

debian/clean

пример debian/clean

src/auto/config.h
src/auto/config.mk

Эта проблема обычно возникает при последующей сборке пакетов Debian, хотя вы могли вносить или не вносить изменения в исходный код во время первой сборки. Во время первой сборки, dpkg-sourceсоздает <package-source>.orig.tar.{xz, gz, lzma}в каталоге верхнего уровня. Например. в случае libva, вы найдете его как:

      parent
├── libva
├── libva_2.11.0.orig.tar.xz

Теперь, когда вы вносите изменения внутри libva/ или пытаетесь собрать последующие разы, он распаковывает этот исходник tar.gz и пытается сравнить с новыми файлами сборки, находя изменения в новой сборке.

Решение состоит в том, чтобы удалить старый исходный tar, создать новый для последующей сборки, используя:

      dh_make --createorig -p libva_2.11.0

И продолжайте создавать пакеты deb, используя команды, которые вы выполняли. Обычно это будет:

      debuild -d -uc -us

или же

      dpkg-buildpackage -b -uc -us
Другие вопросы по тегам