«Dpkg-source: непредставленные изменения в источнике» при попытке отладки модифицированного пакета


8

Я загрузил исходный код в пакет, используя:

$ apt-get source gkrellweather

Я также удостоверился, что у меня были зависимости компиляции:

$ sudo apt-get build-dep gkrellweather

И я проверил, что он может нормально работать:

$ cd gkrellweather-2.0.8
$ debuild

Он создал .debпакет в папке выше, который я мог установить, используя:

$ sudo dpkg -i ../gkrellweather*.deb

ОК, так что все на месте. Давайте начнем!

Я открыл исходный код в Vim и внес некоторые изменения, которые я хотел. Затем я попытался восстановить:

$ debuild

Но я получил следующую ошибку:

...
dh_clean: Compatibility levels before 5 are deprecated (level 4 in use)
 dpkg-source -b gkrellweather-2.0.8
dpkg-source: warning: no source format specified in debian/source/format, see dpkg-source(1)
dpkg-source: info: using source format `1.0'
dpkg-source: info: building gkrellweather using existing gkrellweather_2.0.8.orig.tar.gz
dpkg-source: info: building gkrellweather in gkrellweather_2.0.8-2.diff.gz
dpkg-source: error: cannot represent change to gkrellweather-2.0.8/.gkrellweather.c.swp: binary file contents changed
dpkg-source: warning: the diff modifies the following upstream files: 
 GrabWeather
 Makefile
 gkrellweather.c
dpkg-source: info: use the '3.0 (quilt)' format to have separate and documented changes to upstream files, see dpkg-source(1)
dpkg-source: unrepresentable changes to source
dpkg-buildpackage: error: dpkg-source -b gkrellweather-2.0.8 gave error exit status 1
debuild: fatal error at line 1357:
dpkg-buildpackage -rfakeroot -D -us -uc failed

Почему?

Ответы:


5

Благодаря ответу joeytwiddle, который дал мне отличное место для начала решения этой проблемы.

В моем проекте Python, для которого я попытался создать пакет debian, я использую:

  • pybuild подготовит пакет debian перед запуском debuild
  • мерзавец для контроля версий
  • PyCharm IDE для разработки Python

git создает .gitкаталог, pybuild создает .pybuildкаталог, а PyCharm создает .ideaкаталог в корне моего проекта.

Поскольку joeytwiddle упомянул, что debuild не понравился определенный файл (в его случае файл swp), тогда я почувствовал, что он, вероятно, имеет отношение к скрытым каталогам. Я обнаружил, что для git вы можете сделать: debuild -iи он игнорирует каталоги контроля версий, так как для каталогов pybuild и idea я еще не нашел другой вариант. Так что для моего решения, я скопировал мой проект в пустой каталог, удаляется .git, .ideaи .pybuildкаталоги и успех!


3
-iполучает передается через debuildк , dpkg-buildpackageа затем dpkg-source, чей человек страница говорит , что регулярное выражение может быть предоставлена. Без тестирования, я думаю, -i'(^|/)\.(git|idea|pybuild)($|/)'может сработать для вас.
Joeytwiddle

3

Это сбило меня с толку не раз. Иногда я думал, что причиной ошибок debuild после изменения источника было то, что после изменения источника подпись сопровождающих пакетов (подпись) больше не действительна для этого источника.

Но на самом деле в этом случае ответ был прост:

dpkg-source: error: cannot represent change to gkrellweather-2.0.8/.gkrellweather.c.swp: binary file contents changed

Проблема в том, что Vim создал swafile , и ему debuildэто не понравилось!

Решение было простым: удалите файл подкачки, и тогда сборка может работать:

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