如何为多个 Debian/Ubuntu 发行版构建和发布二进制文件?

如何为多个 Debian/Ubuntu 发行版构建和发布二进制文件?

对于专有软件,我想为多个发行版构建和发布多个版本的软件。例如 1.0、1.1 以及用于挤压、喘息和精确的两个版本。

构建在不同的机器上自动运行并生成特定于发行版的.deb文件。特定于发行版的方式是它们链接到特定于发行版的库版本。例如,OpenSSL 0.9.8 用于挤压,1.0.1 用于喘息。但是,这些包是使用相同的版本号和包名称构建的。这可能就是导致以下问题的原因。

目前,我正在使用 reprepro 和includedeb命令将二进制文件添加到存储库。效果很好,直到我添加为第二个发行版构建的相同软件包版本。

Squeeze 的发布很好

# reprepro -b ./repo --outdir ./wwwpub/repo includedeb squeeze /path/to/sqeezepackages/packagename-1.0.deb

但随后发布基于 wheezy 构建的相同版本的软件,发布 wheezy 失败了:

# reprepro -b ./repo --outdir ./wwwpub/repo includedeb wheezy /path/to/wheezypackages/packagename-1.0.deb 
/path/to/wheezypackages/packagename-1.0.deb: component guessed as 'main'
ERROR: '/path/to/wheezypackages/packagename-1.0.deb' cannot be included as 'pool/main/p/packagename/packagename_1.0_all.deb'.
Already existing files can only be included again, if they are the same, but:
md5 expected: e7df7cd2ca07f4f1ab415d457a6e1c13, got: 0fa924209085a5713f79e6a30649455f
sha1 expected: 947b41827bbac414baddf0648b9abecaad8de4fe, got: 1be168ff837f043bde17c0314341c84271047b31
sha256 expected: a883dafc480d466ee04e0d6da986bd78eb1fdd2178d04693723da3a8f95d42f4, got: a93dbf1e95ddc4cfa84e9cd3cfa6c9e0e14affd79812abde4bca688224430a65
size expected: 1234, got: 1235
There have been errors!

我假设我的构建需要每个发行版都有一个唯一的版本号。

  • 实现这一目标的最简单方法是什么?
  • 如何将其添加到当前版本号?是否建议使用1.1~wheezy1.1+wheezy1.1-1(递增)1.1+deb6等?即将jessie到来,我希望系统在 dist 升级期间识别这一点,我认为仅使用发行版名称将无法像j之前那样工作w,并且将被 APT 识别为较旧的版本。
  • 一旦确定了如何建立版本号;如何将其添加到我的工具中?我想我需要在debian/control文件中进行启发式处理,以获得特定于其所构建的发行版的版本号。对于变更日志,我也必须调用dch以符合该版本号。

答案1

我个人只会为每个发行版制作一个存档。

这将解决您的问题,并且好处是每个存档都会更小。 (客户端下载和解析速度更快)

相关内容