【问题标题】:dpkg-shlibdeps: error: no dependecy information founddpkg-shlibdeps:错误:未找到依赖信息
【发布时间】:2015-01-29 18:56:22
【问题描述】:

我正在尝试使用 dpkg-buildpackage 创建我的 Qt 应用程序的 .deb 包。我编译了一个第三方 (snmp) 以在我的应用程序中使用。它运行成功。但是在生成 .deb 应用程序时出现错误:

dpkg-shlibdeps:错误:找不到 /usr/local/lib/libnetsnmp.so.30 的依赖信息

我一直在此链接中寻找解决方案:

dpkg-shlibdeps: error: no dependency information found for

也在其他页面上,但没有找到解决方案。

我尝试编辑 /etc/ld.so.conf 以添加 libnetsnmp.so.30 路径,但没有成功。

我在运行命令时才意识到:

ldconfig -p | grep libnetsnmp.so.30

我在 ldconfig 中有两个 libnetsnmp.so.30 库,而且它们彼此不同。

libnetsnmp.so.30 (libc6,x86-64) => /usr/local/lib/libnetsnmp.so.30
libnetsnmp.so.30 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libnetsnmp.so.30

我也尝试只提供其中一个。但它没有用。

有没有办法生成带有或不带有这个库的 .deb 包?

Obs.:我不打算将 /usr/bin/dpkg-shlibdeps 编辑为 $ignore_missing_info = 1 作为解决方法。

谢谢

【问题讨论】:

  • 感谢您提到将 dpkg-shlibdeps 编辑为 $ignore_missing_info = 1 的选项。这对我有用!

标签: c++ qt build ld packaging


【解决方案1】:

dpkg-shlibdeps 是一个工具,旨在通过动态链接找出新包所依赖的所有包。它通过检查所有新二进制文件以查看它们链接到哪些库以及使用了这些库中的哪些符号,然后检查 dpkg 数据库以查看哪些包拥有这些库并找到提供所需的最低包版本必要的符号。

在您的情况下,它会看到您的应用程序与该 libnetsnmp.so.30 链接,因此它会检查哪个包拥有该库。哎呀,没有包。这就是错误的来源——也许你已经知道了所有这些,但我想我会把它包括在上下文中。

现在,正确的解决方案取决于您希望如何处理自定义编译的 snmp 库。基本上选择是 (a) 将您的自定义 libnetsnmp 与您的包一起提供,(b) 单独打包您的自定义 libnetsnmp,或者 (c) 根本不使用自定义 libnetsnmp;使用您的操作系统提供的任何 libsnmp* 软件包。

(a): 要将 libnetsnmp 与您的软件包一起提供,您需要小心确保它不会提供与标准 libsnmp 软件包相同的 SONAME,因此它们不会相互干扰。最简单的方法可能只是静态链接它(链接到.a.o 文件而不是.so 动态库)。如果您的软件包适用于 Debian 或 Ubuntu,这可能会令人不悦,但如果您证明选择 (b) 和 (c) 对您不适用,那可能没问题。

(b):正确打包库是一个相当深入的话题; StackOverflow 的答案太多了。但是文档在那里。根据您的 libnetsnmp 从上游版本更改了多少,您可能需要更改库的名称(和SONAME)以避免任何混淆。如果您的 libnetsnmp 只是 Debian sid 或 Ubuntu 中较新的 libsnmp 软件包的反向移植,那么正确的做法可能是在您的 PPA 中发送“官方”libsnmp30 deb 的副本,或者安排发送 libsnmp30 -backports 存储库。然后,您只需将 libsnmp-dev (>= whatever) 上的 Build-Depends: 添加到您的包中,并针对它进行构建(而不是在 /usr/local 中手动安装 .so 文件)。

(c):如果您实际上不需要对 snmp 进行自定义编译,并且您的操作系统/发行版中可用的版本已经足够好,那么只需 Build-Depends: 就可以了,并删除手动安装的 .so文件在/usr/local

【讨论】:

    猜你喜欢
    • 2012-06-29
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    相关资源
    最近更新 更多