我使用以下命令将源代码下载到一个包中:
$ 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
为什么?
答案1
感谢 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
目录并取得成功!
答案2
这个问题之前已经困扰我多次了。有时我认为更改源代码后出现 debuild 错误的原因是源代码更改后,软件包维护者的签名 (signoff) 对该源代码不再有效。
但实际上在这种情况下答案很简单:
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