我有一个名为阿尔莎我将其作为源代码和 (deb) 二进制文件分发给 x86 和 x86_64 架构,也就是说,我有制作 deb 文件的经验。我收到了不少设置 PPA 的请求。我想我会在即将发布的版本中这样做。Ubuntu 存储库中的 Artha 是 1.0.2 版本,我正在尝试为 Artha 1.0.3 创建 PPA。
我读Launchpad 的Personal Package Archive
文档,并且 PPA 现已建立,但是有关版本控制的此页面说对于像 Artha 这样已经在 Ubuntu 仓库中的包,其artha-1.0.2-1ubuntu1
PPA 版本应该为artha-1.0.3-1ubuntu1ppa1
,这样当 Ubuntu 仓库更新到 Artha 1.0.3 时,它会取代我的 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 发生的事情,我会非常高兴。
答案1
结果包的版本来自于提供的版本号,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
但它不会取代源自 Debian 的带有 Ubuntu 更改的版本,即1.0.3-1ubuntu1
$ dpkg --compare-versions 1.0.3-1 le 1.0.3-1ubuntu1 || echo "False"
$
波浪号 ( ~
) 字符在版本号中具有特殊含义。例如:
$ dpkg --compare-versions 1.0.3-1 le 1.0.3-1~ppa1 || echo "False"
False
由于你的软件包不是来自 Debian,我使用这样的版本号,1.0.3-0~ppa1
这保证了它低于直接从 Debian 同步的版本或在 Ubuntu 中引入的版本,
因此你的更改日志看起来应该是这样的:
artha (1.0.3-0~ppa1) quantal; urgency=low
* New upstream release.
-- Your Name <[email protected]> Sun, 07 Oct 2012 13:06:56 -0400
是否使用debuild -S -sd
或debuild -S -sa
确实是一个不同的问题,但这里有一个简短的答案。
-sa
确保将.orig.tar.bz2
上传。如果您之前没有上传过此上游版本,请使用此。
-sd
明确地规定只上传debian.tar.gz
或diff.tar.gz
。这适用于对目标存档或 PPA 中已有的上游版本进行更改的情况。这是因为原始 tarball 应该已经存在。