如何创建和管理多架构 PPA?

max*_*zig 16 launchpad packaging ppa

我有一个程序需要为每个 ubuntu 版本重新编译。

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

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

我不知道如何做到这一点。

Ubuntu PPA 构建服务器是如何工作的——它是否只查看最新更改日志条目(在 debian/changelog 文件中)中的分布字段来确定应该构建包的分布?

debian 规范允许将多个发行版添加到发行版字段中。但这对我没有帮助。

一些 ubuntu 文档谈到将发行版名称编码为版本号(在 debian 更改日志文件中)。

但这在实践中如何运作?有新版本的程序可用,然后呢?我是否为每个发行版添加一个新的更改日志条目,并且 PPA buildserver 在 dput'ing 之后为每个发行版自动构建新包?还是 PPA 构建服务器只查看第一个更改日志条目?

Las*_*sen 10

The way to go is to upload once for every Ubuntu version.

Launchpad won't build packages for Ubuntu versions that are no longer supported, and only build a package for one specific version of Ubuntu. The targeted version is (as you already know) specified in the changelog file, by the newest entry!

Remember to be aware that the packages your program depends on might not be available at the same version across all versions of Ubuntu.

您还讨论了“多架构”(架构 = CUP 类型,例如 x86、LPIA、AMD64)这没有区别,因为只要您Architecture: any在包定义 ( debian/control) 文件中有所有可用架构,上传的每个包都是为所有可用架构构建的,这也允许您使包依赖于不同架构的不同包(多次定义包)


Isa*_*iah 10

Launchpad 有一项目前处于测试阶段的新功能,它允许您一次为多个 ubuntu 版本构建包,而无需任何额外工作。您甚至可以每天自动构建您的包。https://help.launchpad.net/Packaging/SourceBuilds/GettingStarted 替代文字


Sco*_*hie 6

关于命名约定,标准是做这样的事情:

  • 1.0-0ubuntu1 用于最终出现在 Ubuntu 官方存档中的软件包
  • 1.0-0ubuntu1~lucidppa1 表示您为 lucid 放入 PPA 的那个包的版本
  • 1.0-0ubuntu1~karmicppa1 用于 Karmic 的那个包的版本

原因是版本字段中的 ~ 代表版本号的“小于零”。因此,如果有人在 Karmic 添加您的 PPA,他们将获得 ~karmicppa1 包。当他们升级到 Lucid(并阅读您的 PPA)时,它将被 Lucid PPA 包替换。如果您的包裹随后进入官方存档,则从 PPA 的过渡将顺利进行。

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