我正在使用 dpkg 构建 debian 软件包。
该软件包依赖于 libvirt,这是不需要的。
规则文件没有指定此依赖项,但它是由 dpkg 添加的,我想是由于在构建时对 libvirt-dev 的一些调用所致。
但是我的包在没有 libvirt 的情况下工作正常。因此,libvirt 是“推荐”包,但不是“必需”包。如何覆盖此依赖项并确保它不存在于我的最终 deb 文件中?
最佳答案
如果没有看到你的实际包,很难知道,但我猜你有一个与 libvirt 链接的二进制或共享库。这将导致 dh_shlibdeps
将 libvirt 包含在 ${shlibs:Depends}
子变量中。
如果这是您的问题,那么正确的修复取决于链接到 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。
关于deb - 如何确保 debian 软件包没有依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19192751/