对于专有软件,我想为多个发行版构建和发布多个版本的软件。例如 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~wheezy
、1.1+wheezy
、1.1-1
(递增)1.1+deb6
等?即将jessie
到来,我希望系统在 dist 升级期间识别这一点,我认为仅使用发行版名称将无法像j
之前那样工作w
,并且将被 APT 识别为较旧的版本。 - 一旦确定了如何建立版本号;如何将其添加到我的工具中?我想我需要在
debian/control
文件中进行启发式处理,以获得特定于其所构建的发行版的版本号。对于变更日志,我也必须调用dch
以符合该版本号。
答案1
我个人只会为每个发行版制作一个存档。
这将解决您的问题,并且好处是每个存档都会更小。 (客户端下载和解析速度更快)