【发布时间】:2013-10-05 00:37:41
【问题描述】:
我正在使用 dpkg 构建一个 debian 包。
该软件包依赖于不需要的 libvirt。
规则文件没有指定这个依赖,但它是由 dpkg 添加的,我想是由于在构建时对 libvirt-dev 的一些调用。
但是,如果没有 libvirt,我的包也可以正常工作。因此,libvirt 是“推荐”包,但不是“必需”包。如何覆盖此依赖项并确保它不存在于我的最终 deb 文件中?
【问题讨论】:
标签: deb
我正在使用 dpkg 构建一个 debian 包。
该软件包依赖于不需要的 libvirt。
规则文件没有指定这个依赖,但它是由 dpkg 添加的,我想是由于在构建时对 libvirt-dev 的一些调用。
但是,如果没有 libvirt,我的包也可以正常工作。因此,libvirt 是“推荐”包,但不是“必需”包。如何覆盖此依赖项并确保它不存在于我的最终 deb 文件中?
【问题讨论】:
标签: 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。
【讨论】: