如何创建和管理多体系结构PPA?


13

我有一个程序,需要针对每个ubuntu版本进行重新编译。

目前,我仅在当前发行版中使用Ubuntu的PPA打包它。

最终,我必须为先前的ubuntu版本提供软件包。

我不确定如何做到这一点。

Ubuntu PPA构建服务器如何工作-它是否仅查看最新的changelog条目(在debian / changelog文件中)中的distribution字段来确定应针对哪个发行版构建软件包?

debian规范允许将多个发行版本添加到发行字段中。但这并不能帮助我。

一些ubuntu文档讨论将发行名称编码为版本号(在debian changelog文件中)。

但是这在实践中如何工作?该程序有新版本,那又如何呢?我是否为每个发行版添加一个新的变更日志条目,并且PPA构建服务器在将其分发后为每个发行版自动构建新软件包?还是PPA buildserver仅查看第一个变更日志条目?


1
我对这个过程也很感兴趣!
Marco Ceppi

Answers:


7

可行的方法是为每个Ubuntu版本上传一次

Launchpad不会为不再受支持的Ubuntu版本构建软件包,而只会为一个特定版本的Ubuntu构建软件包。目标版本(如您所知)在changelog文件中由最新条目指定!

请记住,请注意,您的程序所依赖的软件包可能在所有版本的Ubuntu中均不可用。

您还谈到了“多体系结构”(体系结构= CUP类型,例如x86,LPIA,AMD64),这没有什么区别,因为只要您Architecture: any在软件包定义(debian/control)文件中都为所有可用的体系结构构建了上载的每个软件包,这也使您可以使程序包依赖于不同体系结构的不同程序包(多次定义程序包)


10

Launchpad具有当前处于Beta中的新功能,该功能使您可以立即为多个ubuntu版本构建软件包,而无需进行任何额外的工作。您甚至可以每天自动构建软件包。https://help.launchpad.net/Packaging/SourceBuilds/GettingStarted 替代文字


1
听起来很有趣。我不能直接使用它,因为我没有使用bzr或Launchpad进行存储库托管(我正在使用Mercurial)。但!每次我想触发新的程序包构建时,在启动板上创建bzr信息库并从我的主信息库中转储最新的变更集也许是可行的。
maxschlepzig's

我不会经常编写任何代码,对此我感到很兴奋。
人,2010年

@maxschlepzig提出一个单独的问题,关于如何将汞材料导入启动板,我会回答。
豪尔赫·卡斯特罗

6

关于命名约定,标准是执行以下操作:

  • 1.0-0ubuntu1,该软件包最终出现在Ubuntu的官方档案中
  • 1.0-0ubuntu1〜lucidppa1表示您在PPA中放入的该程序包的版本
  • 1.0-0ubuntu1〜karmicppa1用于Karmic的软件包版本

原因是版本字段中的〜表示版本号“小于等于”。因此,如果有人在Karmic中添加您的PPA,他们将获得〜karmicppa1软件包。然后,当他们升级到Lucid(并阅读了您的PPA)时,它将被Lucid PPA软件包取代。如果您的软件包随后进入了官方档案库,则从PPA迁移的过程将很顺利。

另一个优点是,将发行版放在版本字段中可以清楚地说明文件适用于哪个发行版(并巧妙地提醒您每个发行版上传一个)。例如,当您具有不同的依赖性时,每个Ubuntu版本可能还需要不同的分支。


斯科特-是否有一些此类文档?
BartoszRadaczyński2013年

〜和东西可能被标记为模糊的地方。其余只是我在其他开发人员中观察到的约定,而不是正式记录的实践。
Scott Ritchie

好的,谢谢,您建议的命名约定效果很好。
BartoszRadaczyński2013年

我应该补充一点,有时这会进一步扩展为在ppa之前加上一个〜:1.0-0ubuntu1〜karmic1〜ppa1这样做的原因是,针对Karmic的官方稳定发行版更新可能会发布为1.0-0ubuntu1〜karmic1,我们希望PPA版本小于该值。
Scott Ritchie 2013年

不得不在Freenode上的#launchpad中询问,并且显然这在LaunchPad Wiki上的Building Source Package下是半文档化的。感谢您提供有关此约定的信息,它非常有用^ _ ^
TrinitronX 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.