如何使用dpkg-buildpackage清理源代码以重建包?

时间:2014-05-26 13:58:56

标签: debian packaging deb dpkg

我正在玩dpkg,但我遇到了一个相当奇怪的问题:第一个包成功构建后第二次无法构建包。

dpkg-buildpackage -sa
....
dpkg-source: warning: newly created empty file 'build/lib.linux-x86_64-2.7/neutron/api/__init__.py' will not be represented in diff
(repeats 100500 times for different files).

我怎样才能第二次重建deb?

看起来我错过了一些清理命令。

4 个答案:

答案 0 :(得分:12)

debian/rules文件实际上是Makefile必须(根据Debian policy)有一个 clean 目标清理构建。

如果此目标未自动运行,您可以使用以下内容明确地调用它:

 dpkg-buildpackage -rfakeroot -Tclean

答案 1 :(得分:2)

另一种可能性是使用debuild而不是直接调用dpkg-buildpackage。 最简单的方法是构建二进制包以及未签名的源和未签名的更改日志,cd到源的debian/目录,并且:

$ debuild -uc -us

您可以致电clean上的debuild目标进行清理。

$ debuild clean

答案 2 :(得分:0)

debian/rules文件通常设置为清除旧的构建文件,但是您的文件似乎有错误,或者只是缺少此功能。 (提交错误报告?)

如果不了解您的软件包,这是推测性的,但请尝试删除build目录。

在最坏的情况下,重新打开包装来重新开始。

答案 3 :(得分:0)

感谢大家的帮助。

在我的案例中,问题分为两部分:

  • 未清理的文件(原始包装没有适当的清洁规则)
  • neutron_2013.2.3.orig.tar.gz包装不正确,带neutron.egg-info(甚至在github上的repo上添加到.gitignore)

所以在我看来,解决方案相当复杂:

  1. 没有neutron重新包装neutron_2013.2.3.orig.tar.gz.egg-info
  2. 在neutron_2013.2.3-0ubuntu1~cloud0.dsc中更改md5sum / sha1sum / sha256sum和filesizes
  3. 使用dpkg-source -x解压缩源代码-x neutron_2013.2.3-0ubuntu1~cloud0.dsc
  4. (补丁/凹凸版)
  5. dpkg-buildpackage -sa
  6. 要再次打包,请在neutron-2013.2.3中删除:
    1. rm -r build neutron.egg-info
    2. 找到。 -name“* .py”| xargs rm
  7. dpkg-buildpackage -sa