2

我正在使用 dpkg 构建一个 debian 包。

该软件包依赖于不需要的 libvirt。

规则文件没有指定这种依赖关系,但它是由 dpkg 添加的,我想是由于在构建时对 libvirt-dev 的一些调用。

然而,我的包在没有 libvirt 的情况下也能正常工作。因此,libvirt 是“推荐”包,但不是“必需”包。如何覆盖此依赖项并确保它不存在于我的最终 deb 文件中?

4

1 回答 1

3

如果没有看到你的实际包很难知道,但我猜你有一个与 libvirt 链接的二进制或共享库。这将导致dh_shlibdeps${shlibs:Depends}substvar 中包含 libvirt。

如果这是您的问题,那么正确的解决方法取决于与 libvirt 相关联的内容。它应该是直接确定的;只需ldd在包中的每个二进制或共享库对象上运行,然后用 grep 搜索“libvirt”。

如果与 libvirt 相关联的东西只是包附带的,而不是主要功能的一部分,那么使用 Recommends: 确实是正确的。要dh_shlibdeps将该对象从其依赖项扫描中排除,请给它一个 -X 选项。的示例目标debian/rules,假设 debhelper7 样式的包装:

override_dh_shlibdeps:
        dh_shlibdeps -Xname_of_your_object_to_exclude

如果链接到 libvirt 的东西实际上是包功能的重要组成部分,那么生成的 libvirt 依赖项是合适的。如果您仍然不想要它,您需要弄清楚如何在构建过程中避免链接到 libvirt。

于 2013-10-06T00:33:07.637 回答