尝试破坏已修改的程序包时出现“ 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

为什么?

Answers:


5

感谢joeytwiddle的回答,因为它为我提供了一个很好的起点来开始解决这个问题。

在我尝试为其创建debian软件包的Python项目中,我正在使用:

  • pybuild在运行debuild之前准备debian软件包
  • git版本控制
  • 用于Python开发的PyCharm IDE

git创建一个.git目录,pybuild创建一个.pybuild目录,PyCharm创建一个.idea目录,所有这些都在我项目的根目录下。

因为joeytwiddle提到debuild不喜欢某个文件(在他的情况下是swp文件),所以我觉得它可能适合隐藏目录。我发现对于git,您可以执行以下操作:debuild -i它忽略了pybuild和idea目录的版本控制目录,但我还没有找到其他选择。所以对于我的解决方案,我复制我的项目到空白目录,删除.git.idea.pybuild目录,成功!


3
-i传递debuilddpkg-buildpackage,然后传递给dpkg-source,其手册页上说可以提供正则表达式。没有测试,我想-i'(^|/)\.(git|idea|pybuild)($|/)'可能对您有用。
joeytwiddle

3

这使我不止一次绊倒。有时,我认为在更改源之后发生构建错误的原因是,在更改源之后,软件包维护者的签名(签名)对该源不再有效。

但实际上在这种情况下,答案很简单:

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

问题是Vim创建了一个swafiledebuild但不喜欢这样!

解决方案很简单:删除交换文件,然后构建就可以了:

$ rm ./.gkrellweather.c.swp
$ debuild
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.