我正在使用 dpkg 构建一个 debian 包。
该软件包依赖于不需要的 libvirt。
规则文件没有指定这种依赖关系,但它是由 dpkg 添加的,我想是由于在构建时对 libvirt-dev 的一些调用。
然而,我的包在没有 libvirt 的情况下也能正常工作。因此,libvirt 是“推荐”包,但不是“必需”包。如何覆盖此依赖项并确保它不存在于我的最终 deb 文件中?
我正在使用 dpkg 构建一个 debian 包。
该软件包依赖于不需要的 libvirt。
规则文件没有指定这种依赖关系,但它是由 dpkg 添加的,我想是由于在构建时对 libvirt-dev 的一些调用。
然而,我的包在没有 libvirt 的情况下也能正常工作。因此,libvirt 是“推荐”包,但不是“必需”包。如何覆盖此依赖项并确保它不存在于我的最终 deb 文件中?
如果没有看到你的实际包很难知道,但我猜你有一个与 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。