debuild:找不到上游tarball。

修补程序包的正确命名惯例是什么?

我正在尝试组合一个带有补丁的exiv2版本,以添加额外的模式。

以下是我迄今为止所做的:

$ sudo apt-get build-dep exiv2
$ cd src/exiv2
$ apt-get source exiv2
$ cd exiv2-0.23-1ubuntu2
 ... apply patch
$ dpkg-source --commit
$ dch -i
    exiv2 (0.23-1ubuntu2-DwC1) trusty; urgency=medium
$ debuild -S -sd -k1230CB40

但是我接着收到一个错误信息:

这个软件包有一个Debian修订号,但在父目录中似乎没有适当的原始tar文件或.orig目录;(期望其中之一:exiv2_0.23-1ubuntu2.orig.tar.gz、exiv2_0.23-1ubuntu2.orig.tar.bz2、exiv2_0.23-1ubuntu2.orig.tar.lzma、exiv2_0.23-1ubuntu2.orig.tar.xz或exiv2-0.23-1ubuntu2.orig) 是否继续?(y/n)y

dpkg-source -b exiv2-0.23-1ubuntu2 dpkg-source: error: 无法使用源代码格式'3.0 (quilt)'进行构建:在../exiv2_0.23-1ubuntu2.orig.tar.{bz2,gz,lzma,xz}中找不到上游tarball dpkg-buildpackage: error: dpkg-source -b exiv2-0.23-1ubuntu2返回错误退出状态255 debuild: 在第1364行发生致命错误:dpkg-buildpackage -rfakeroot -d -us -uc -S -sd失败

$ ls ..
exiv2-0.23-1ubuntu2  exiv2_0.23-1ubuntu2.debian.tar.gz  exiv2_0.23-1ubuntu2.dsc  exiv2_0.23-1ubuntu2-DwC1_source.build  exiv2_0.23.orig.tar.gz

我需要做什么才能让debuild识别原始的tar文件?
1个回答

问题出在版本字符串中的-DwC1。根据Debian政策,上游版本可以包含. + - : ~,但Debian修订版只能包含+ . ~,因此在-DwC1之前的所有内容都被视为上游版本的一部分,因此它正在寻找具有该版本的原始tarball。
当您添加该条目时,dch提供了一个线索。
dch warning: your current directory has been renamed to:
../exiv2-0.23-1ubuntu2
dch warning: no orig tarball found for the new version.

通常,当我上传一个软件包的ppa时,我会提升Ubuntu版本,并添加类似于~ppa0和目标发布版本,比如~trusty。所以例如从1ubuntu21ubuntu3~ppa0~trusty。带有~的额外字符串会导致版本比1ubuntu3小,因此如果软件包在主要仓库中更新,用户将获得更新的版本。
但实际上,你只需要去掉版本号中的连字符,例如1ubuntu2DwC1或者1ubuntu2.DwC1就可以了。

如果我使用exiv2-0.23-1ubuntu3~DwC1,dch会重命名当前目录。我也不认为这是我想要的。但是exiv2-0.23-1ubuntu2DwC1可以工作! - asp
@asp 奇怪,0.23-1ubuntu3~DwC1 在这里运行良好。 - Jason Conti
@asp 哦,我敢打赌我知道问题出在哪里。如果你继续从你命名为“-DwC1”的源目录中工作,然后将版本更改为“~DwC1”,dch会将目录重新命名回去,但它不应该给你“dch警告:找不到新版本的原始tarball。”的警告。所以可能没什么问题。 - Jason Conti