我正在使用dpkg构建debian包。
该软件包依赖于libvirt,这是不可取的。
规则文件没有指定这种依赖关系,但它是由dpkg添加的,我想是由于在构建时对libvirt-dev的一些调用。
然而,如果没有libvirt我的包装正常。因此,libvirt是“推荐”包,但不是“必需”。如何覆盖此依赖项并确保它不存在于我的最终deb文件中?
答案 0 :(得分:3)
很难知道没有看到你的实际包,但我猜你有一个二进制或共享库与libvirt链接。这会导致dh_shlibdeps
在${shlibs:Depends}
substvar中包含libvirt。
如果这是你的问题,那么正确的修复取决于与libvirt相关联的内容。应该直截了当地确定;只需在包中的每个二进制或共享库对象上运行ldd
,然后为“libvirt”运行grep。
如果链接到libvirt的东西只是附带的,并且不是主要功能的一部分,那么使用推荐:确实是正确的。要使dh_shlibdeps
从其依赖项扫描中排除该对象,请为其指定-X选项。 debian/rules
的示例目标,假设debhelper7样式的包装:
override_dh_shlibdeps:
dh_shlibdeps -Xname_of_your_object_to_exclude
如果链接到libvirt的东西实际上是包功能的重要部分,那么生成的libvirt依赖是合适的。如果你仍然不想要它,你需要弄清楚在构建过程中如何避免链接libvirt。