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

ger*_*ijk 6 packaging debian

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

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

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

为 Squeeze 发布很好

# reprepro -b ./repo --outdir ./wwwpub/repo includedeb squeeze /path/to/sqeezepackages/packagename-1.0.deb
Run Code Online (Sandbox Code Playgroud)

但是随后发布基于 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!
Run Code Online (Sandbox Code Playgroud)

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

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

Mat*_*don 0

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

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