dpkg-shlibdeps 失败并显示“未找到依赖信息”

dpkg-shlibdeps 失败并显示“未找到依赖信息”

我正在为张量流构建一个自定义 debian 包。在某个时刻,当我跑步时

dpkg-buildpackage -us -uc

我得到:

dpkg-shlibdeps: error: no dependency information found for /usr/local/cuda-9.1/lib64/libcurand.so.9.1 (used by debian/libhal-tensorflow-cc/usr/lib/libtensorflow_framework.so)
Hint: check if the library actually comes from a package.
dh_shlibdeps: dpkg-shlibdeps -Tdebian/libhal-tensorflow-cc.substvars debian/libhal-tensorflow-cc/usr/lib/libtensorflow_cc.so debian/libhal-tensorflow-cc/usr/lib/libtensorflow_framework.so returned exit code 2
debian/rules:9: recipe for target 'binary' failed

我查了一下这个页面:https://manpages.debian.org/jessie/dpkg-dev/dpkg-shlibdeps.1.en.html 并尝试按照该工具执行的步骤来获取依赖项信息:

$ dpkg -S libcurand.so.9.1
cuda-curand-9-1: /usr/local/cuda-9.1/targets/x86_64-linux/lib/libcurand.so.9.1
cuda-curand-9-1: /usr/local/cuda-9.1/targets/x86_64-linux/lib/libcurand.so.9.1.85

实际上,这个包有一个对应的.shlibs文件:

$ cat /var/lib/dpkg/info/cuda-curand-9-1.shlibs
libcurand 9.1 cuda-curand-9-1

我检查了该软件包是否确实安装了,它是:

$ apt list | grep cuda-curand-9-1

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

cuda-curand-9-1/unknown,now 9.1.85-1 amd64 [installed,automatic]

所以我不知道它抱怨什么

答案1

dpkg-shlibdeps正在查找有关 的信息/usr/local/cuda-9.1/lib64/libcurand.so.9.1,但cuda-curand-9-1发货的包裹/usr/local/cuda-9.1/targets/x86_64-linux/lib/libcurand.so.9.1并不相同。

您需要确保libtensorflow_framework.so最终以正确的路径链接到附带的库。或者,您可以在debian/shlibs.local自己的包中提供依赖项信息,或dpkg-shlibdeps完全覆盖。

理想情况下,cuda-curand-9-1应该修复以将其库发布到 Debian 系统的规范位置 ( /usr/lib/<triplet>)。

相关内容