对上传到 PPA 的包进行版本控制

leg*_*s2k 6 launchpad packaging ppa

我有一个名为Artha的包,我将它作为 x86 和 x86_64 架构的源代码和(deb)二进制文件分发,即我有制作 deb 文件的经验。我收到了很多关于设置 PPA 的请求。我想我会为即将发布的版本做这件事。Ubuntu 存储库中的 Artha 版本为 1.0.2,我正在尝试为 Artha 1.0.3 创建 PPA。

我阅读了Launchpad 的Personal Package Archive文档,现在已经设置了 PPA,但是这个版本控制页面说对于已经在 Ubuntu 存储库中的像 Artha 这样的包,命名artha-1.0.2-1ubuntu1为 PPA 版本应该是artha-1.0.3-1ubuntu1ppa1,这样当 Ubuntu 的存储库更新到 1.0.3 时Artha,它取代了我的 PPA 包。

当我通常制作我的 .deb 包时,我会得到这些文件

  • artha_1.0.3.orig.tar.bz2
  • artha_1.0.3-1.debian.tar.gz
  • artha_1.0.3-1.dsc
  • artha_1.0.3-1_amd64.build
  • artha_1.0.3-1_amd64.changes
  • artha_1.0.3-1_amd64.deb

以及 i386 的等价物。这个关于上传到 PPA 的页面说文件 .dsc、.changes 和 .debian.tar.gz 将被上传。

这是我的困惑。我如何使这些文件具有上述版本?即带有“ppa”后缀?当然,我觉得手动重命名 Artha 的源包提取目录似乎不是正确的方法。

我还应该debuild -S -sd还是debuild -S -sa?Launchpad 页面说现有包的替代版本应该使用前者。这对我来说听起来模棱两可。这是什么意思?更新版本算作替代版本吗?

有很多关于设置 PPA 的详细页面。但是它们仅用于设置一次,而 PPA 都是关于更快地为特定包提供更新并且可维护性非常重要,如果有人能给我指出这样一个讨论更新等的文档,我会很棒。即关于初始上传后 PPA 发生的事情。

and*_*ing 7

生成的包的版本来自中提供的版本号,debian/changelog因此您必须在那里拥有适当的版本。

1.0.3-1 将取代 Ubuntu 只上传版本化 1.0.3-0ubuntu1

$ dpkg --compare-versions 1.0.3-1 le 1.0.3-0ubuntu1 || echo "False"
False
Run Code Online (Sandbox Code Playgroud)

但它不会取代源自 Debian 并带有 Ubuntu 更改的版本,即 1.0.3-1ubuntu1

$ dpkg --compare-versions 1.0.3-1 le 1.0.3-1ubuntu1 || echo "False"
$
Run Code Online (Sandbox Code Playgroud)

tilda ( ~) 字符在版本号中具有特殊含义。例如:

$ dpkg --compare-versions 1.0.3-1 le 1.0.3-1~ppa1 || echo "False"
False
Run Code Online (Sandbox Code Playgroud)

由于您的软件包不是源自 Debian,因此我使用了这样的版本号,1.0.3-0~ppa1这保证它小于直接从 Debian 同步或在 Ubuntu 中引入的版本,

因此,您的更改日志应如下所示:

artha (1.0.3-0~ppa1) quantal; urgency=low

  * New upstream release.

 -- Your Name <foo@bar.com>  Sun, 07 Oct 2012 13:06:56 -0400
Run Code Online (Sandbox Code Playgroud)

是否使用debuild -S -sddebuild -S -sa确实是一个不同的问题,但这里有一个简短的答案。

-sa确保.orig.tar.bz2将被上传。如果您之前没有上传过这个上游版本,请使用这个。

-sd明确规定只上传debian.tar.gzdiff.tar.gz。这适用于当您对目标存档或 PPA 中已经可用的上游版本进行更改时。这是因为原始 tarball 应该已经存在。