![如何正确对修改后的软件包进行版本控制?](https://linux22.com/image/871873/%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E5%AF%B9%E4%BF%AE%E6%94%B9%E5%90%8E%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%E8%BF%9B%E8%A1%8C%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%EF%BC%9F.png)
目前我正在修改 deja-dup 备份工具,我的不光彩的尝试记录如下:https://answers.launchpad.net/deja-dup/+question/76645我的源分支位于:lp:~beowulfof/+junk/deja-dup。
基本上,我所做的是添加远程文件系统异步上传选项和手动选择备份文件大小的设置,而不仅仅是使用 5/25MiB(我认为用户应该能够自己决定)。
但我的问题不是关于更改,而是关于构建软件包的版本。在开发补丁时,我只是将版本号增加到33.ubuntu3
,而原始软件包的版本号为32.0-0ubuntu5
。
我想构建一个包并将其添加到我的 PPA 中,但因此我想根据包装指南到32.0_0ubuntu5ppa1
。
如果我尝试通过bzr builddeb -S -- -us -uc
它构建源包,它会声明以下内容:
bzr: ERROR: Inconsistency between source format and version: version is not native, format is native.
那么,在为 PPA 构建包之前,我应该将其设置为哪个版本?
答案1
您收到该错误的原因是因为该debian/source/format
文件表明这是一个3.0 (native)
包。
作为背景信息,该debian/source/format
文件描述了包的格式。有三种格式可用:
1.0
:指定debian
文件夹以及需要对上游软件包中的其他文件进行的任何更改都将放在一个.diff.gz
文件中。这将生成一个.orig.tar.gz
包含上游 tarball 的文件,.diff.gz
其中包含用于打包的更改/添加。3.0 (quilt)
:指定文件夹debian
中的某个文件.debian.tar.gz
,对上游文件的更改将被指定为debian/patches
文件夹中单独的补丁文件,并将使用 quilt 补丁系统。3.0 (native)
:与 相同3.0 (quilt)
,但对于不会有任何补丁的软件包,因为软件/程序本身是由分销商(Debian、Ubuntu 等)制作的,所以任何更改都会直接对文件进行。
对于后两种格式,版本控制格式不同。3.0 (quilt)
需要版本号后跟-#
或-#ubuntu#
。 一些示例包括2.7-1ubuntu3
(从 Ubuntu 的角度来看,这意味着该软件包是从 Debian 导入的,但在其基础上进行了 Ubuntu 特定的更改)和3.4-2
(从 Ubuntu 的角度来看,这意味着该软件包是从 Debian 导入的,但在其基础上进行了不Ubuntu 特有的更改)。请注意,版本并不一定表示上游 tarball 本身是否有更改(中的补丁文件debian/patches
),或者是否只是在构建软件包时发生了更改。
对于3.0 (native)
,版本后没有破折号。例如23
和8.4
。
就您而言,版本遵循3.0 (quilt)
格式,但debian/source/format
显示3.0 (native)
。您需要在此处执行两件事:
改成。
debian/source/format
3.0 (quilt)
(推荐)对软件包的任何更改都应单独进行修补。请查看 Ubuntu 的补丁文件夹的语法。请注意,该
series
文件指定应应用文件夹中的哪些补丁以及应用顺序。(以 开头的行将#
被忽略)
至于您的软件包的版本,使用32.0-0ubuntu5ppa1
就可以了(注意下划线和破折号)。