![如何从由 shlibs:Depends 生成的 Depends 行中删除 ia32-libs?](https://linux22.com/image/811194/%E5%A6%82%E4%BD%95%E4%BB%8E%E7%94%B1%20shlibs%3ADepends%20%E7%94%9F%E6%88%90%E7%9A%84%20Depends%20%E8%A1%8C%E4%B8%AD%E5%88%A0%E9%99%A4%20ia32-libs%EF%BC%9F.png)
我创建了一个包含 32 位库的软件包,用于兼容 64 位系统上的 32 位应用程序,存储在 中/usr/lib32
。这会导致ia32-libs
依赖项添加到我的软件包中。但是,如果没有这些库,该软件包也可以正常工作,因为其他 32 位程序应该ia32-libs
自行安装。
我如何防止构建过程生成ia32-libs
依赖项?nvidia-current
似乎也能做到这一点,但使用了我不使用的 CDBS。(我使用rules
生成的纯文件dh_make
)
答案1
ia32-libs
Debian Multiarch 实施指南中明确介绍了如何删除依赖项:
http://wiki.debian.org/Multiarch/Implementation
这基本上意味着如果某些 dpkg 工具在指定多架构时发出了太多包,那么这是一个工具错误,现在是提交报告的好时机。
答案2
为了让 debhelper 忽略 32 位库,我必须添加一个忽略路径的目标包含 /usr/lib32
:
override_dh_shlibdeps:
dh_shlibdeps --exclude=/usr/lib32
此后,ia32-libs 依赖项将不再计算。由于此目标仅适用于 64 位系统,因此我实际上对 virtualgl 包使用了以下代码片段:
ifeq ($(DEB_BUILD_ARCH), amd64)
override_dh_shlibdeps:
dh_shlibdeps --exclude=debian/virtualgl/usr/lib32
endif
请注意,之前的空格dh
是标签。