如何覆盖.deb子包的版本?

时间:2010-06-18 16:13:39

标签: debian packaging debian-based

我需要为我们的软件制作一个.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)在vim中与其他头条目的重点不同,并且(b)有没有效果。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

这为您提供了两个选项 -

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

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