Как решить проблему с исходным кодом 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://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