我有一个需要为每个 ubuntu 版本重新编译的程序。
目前我正在使用 Ubuntu 的 PPA 打包它,只是为了当前的发行版。
最终,我必须为以前的 ubuntu 版本提供包。
我不知道如何做到这一点。
Ubuntu PPA 构建服务器是如何工作的——它是否只查看最新更改日志条目(在 debian/changelog 文件中)中的分布字段来确定应该构建包的发行版?
debian 规范允许将多个分布添加到分布字段中。但这并不能帮助我。
一些 ubuntu 文档讨论了将发行版名称编码为版本号(在 debian 更改日志文件中)。
但这在实践中如何运作?该程序的新版本可用,然后呢?我是否为每个发行版添加了一个新的变更日志条目,并且 PPA 构建服务器在 dput 后自动为每个发行版新包构建?还是 PPA 构建服务器只查看第一个变更日志条目?
方法是为每个 Ubuntu版本上传一次。
Launchpad 不会为不再受支持的 Ubuntu 版本构建包,而只会为一个特定版本的 Ubuntu 构建包。目标版本(如您所知)在
changelog
文件中由最新条目指定!请记住,您的程序所依赖的软件包可能不会在所有版本的 Ubuntu 中以相同的版本提供。
您还谈到了“多架构”(架构 = CUP 类型,例如 x86、LPIA、AMD64),这没有什么区别,因为只要您
Architecture: any
在包定义 (debian/control
) 文件中,上传的每个包都是为所有可用架构构建的,这也允许您使包依赖于不同架构的不同包(多次定义包)Launchpad 有一个新功能,目前处于测试阶段,它允许您一次为多个 ubuntu 版本构建您的包,而无需任何额外的工作。你甚至可以每天自动构建你的包。https://help.launchpad.net/Packaging/SourceBuilds/GettingStarted
关于命名约定,标准是做这样的事情:
原因是版本字段中的 ~ 表示版本号的“小于无”。因此,如果有人在 Karmic 添加您的 PPA,他们将获得 ~karmicppa1 包。当他们随后升级到 Lucid(并读取您的 PPA)时,它将被 Lucid PPA 包替换。如果您的包随后进入官方存档,则从您的 PPA 的过渡将顺利进行。
另一个优点是,将版本放在版本字段中可以清楚地表明文件适用于哪个版本(并巧妙地提醒您每个版本上传一个)。例如,当您有不同的依赖项时,您可能还需要为每个 Ubuntu 版本使用不同的分支。