【问题标题】:How to override the version of a .deb subpackage?如何覆盖 .deb 子包的版本?
【发布时间】:2010-06-18 16:13:39
【问题描述】:

我需要为我们的软件制作一个 .deb,其中包括 Drupal 的副本。我不得不修补 Drupal,所以我不能使用发行版中的股票 Drupal。我希望结果是一个名为 drupal6-rs_6.16_all.deb 的文件,但因为在我的控制文件中它是一个子包,它“继承”了我的主包的版本,所以我最终得到一个包 drupal6-rs_6.0.6 _all.deb(6.0.6是我们自己代码库的版本)。

我希望能够从同一个 debian/* 描述中生成 Drupal 包,而不是单独为 Drupal 创建一个单独的 debian/* 子树。

这可以吗?我知道使用 RPM 可以覆盖子包的版本,但是如果我将 Version: 6.16 添加到子包的 debian/control 标头中,它 (a) 在 vi​​m 中与其他标头条目不同地突出显示,并且 (b) 有没有效果。

【问题讨论】:

  • 对于这些类型的问题,我通常在 serverfault 上取得更大的成功。

标签: debian packaging debian-based


【解决方案1】:

有时我应该使用 RTFM。看man dh_installchangelogs。它有一个 s 后缀是有原因的!

是的,您似乎可以在多二进制源包中覆盖二进制包的版本。

【讨论】:

  • 是的,我很生气自己忘记查看手册页。
【解决方案2】:

由于每个源码包只有一个debian/changelog 文件,我相信每个源码包只能有一个版本。如果您查看 Debian 包跟踪系统,它总是指一个版本号——源包的版本号。因此,源包构建的二进制包具有相同的版本号。

这让你有两个选择 -

  1. 以正确的方式做事 - 修补 Drupal(可能使用 dpatch,因为 Debian 中的 Drupal 包已经使用它)并作为单独的源包单独保留。放一个版本号后缀(例如6.17-1yourcompany1)。然后为你自己的软件制作一个包,让你的软件依赖于 Drupal。现在您可以依赖drupal6 (=6.17-1yourcompany1),这样您就知道每个人已经实际获得了补丁。使用个人存储库来分发您的软件是个好主意。

  2. 您可以使用的另一种方法是使用 hacky 方法。由于您不想使用单独的 debian/ 文件夹,请使用一个。无论您是从源包制作两个二进制文件还是一个(将所有内容合并到一个大包中),都由您决定要使用哪个版本号 - Drupal 或您的代码库。

【讨论】:

  • 我将得出结论,不可能有一个与源包指定的版本不同的子包,您可以在 RPM 中区分这两者。我可能会硬着头皮为我们打补丁的 Drupal 制作一个单独的源代码包。但是挑剔:我将在打包程序的子版本字段中将其设置为 drupal6-ourcompany-6.17 而不是我们的标识符。这样我们就可以依赖 drupal6-ourcompany >= 6.13
  • 是的,这是有道理的。确保不要将其命名为 drupal6.16-yourcompany,因为当 drupal 创建新的上游版本时,该包将无法满足您的依赖。
  • @Bernd:看看另一个答案。
猜你喜欢
  • 1970-01-01
  • 2018-03-16
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 2022-01-19
  • 1970-01-01
  • 2018-03-27
相关资源
最近更新 更多