的dpkg-shlibdeps:错误:发现没有依赖信息(dpkg-shlibdeps: error:

2019-06-25 20:39发布

我编译deb包,当我运行的dpkg-buildpackage我得到:

dpkg-shlibdeps: error: no dependency information found for /usr/local/lib/libopencv_highgui.so.2.3 

    ...
    make: *** [binary-arch] Error 2

这是因为我手动安装的依赖。 我知道,如果我安装的依赖(或使用检查安装)的问题将是固定的,我想反正生成程序包,因为我不感兴趣的依赖检查。 我知道,我可以给你的dpkg-shlibdeps选项--ignore-missing-info ,防止如果依赖信息无法找到故障。 但我不知道怎么样,因为我使用的dpkg-buildpackage以及dpkg-buildpackage调用的dpkg-shlibdeps通过这个选项的dpkg-shlibdeps ...

我已经尝试:

sudo dpkg-buildpackage -rfakeroot -d -B

与:

export DEB_DH_MAKESHLIBS_ARG=--ignore-missing-info

作为根。

有任何想法吗?

Answer 1:

使用:

override_dh_shlibdeps:
    dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info

如果您的规则文件有没有dh_shlibdeps调用它。 这通常情况下,如果你已经

%:
    dh $@

因为只有在它统治。



Answer 2:

如果你希望它只是忽略该标志,在debian /规则专线改变:

dh_shlibdeps

至:

dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info


Answer 3:

还有一种方法,而不需要修改构建脚本,只创建一个文件。

您可以指定本地SHLIB覆盖创建debian/shlibs.local格式如下: library-name soname-version dependencies

例如,给定以下的(修整) ldd /path/to/binary输出

libevent-2.0.so.5 => /usr/lib/libevent-2.0.so.5 (0x00007fc9e47aa000)
libgcrypt.so.20 => /usr/lib/libgcrypt.so.20 (0x00007fc9e4161000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fc9e3b1a000)

内容debian/shlibs.local将是:

libevent-2.0 5 libevent-2.0
libgcrypt 20 libgcrypt
libpthread 0 libpthread

在“依存关系”列表(第三列)并不需要100%准确 - 我只是使用的库名称本身一次。

当然,这是不需要的在具有这种东西中定义的健全的Debian系统/var/lib/dpkg/info (其可被用作灵感这些覆盖)。 我的是不是一个理智的Debian系统。



Answer 4:

而不是仅仅忽略错误,你也可能要修正这个错误,这通常是要么缺失或不正确的源package.shlibspackage.symbols在包文件,其中包含共享库引发错误。

[1]的文件如何dpkg-shlibdeps使用package.shlibs RESP。 package.symbols ,文件[2]记载了格式package.shlibspackage.symbols文件。

  • [1] https://manpages.debian.org/jessie/dpkg-dev/dpkg-shlibdeps.1.en.html
  • [2] https://www.debian.org/doc/debian-policy/ch-sharedlibs.html


Answer 5:

你刚刚输入错误的出口。 它应该是这样的:

export DEB_DH_SHLIBDEPS_ARGS_ALL=--dpkg-shlibdeps-params=--ignore-missing-info


Answer 6:

的dpkg-buildpackage使用作出处理的debian /规则。 在这个过程中,或dpkg-buildpackage它可能调用的dpkg-shlibdeps。

因此,适当的方式来传递修改包建立过程的一部分,是编辑的Debian /规则。 很难给你更多的提示,没有看到实际的debian /规则。



Answer 7:

您可以使用此:

dh_makeshlibs -a -n

正是dh_install后



Answer 8:

最后我做到了以野蛮方式:

我编辑的脚本在/ usr / bin中/ dpkg的-shlibdeps,改变这个:

my $ignore_missing_info = 0;

my $ignore_missing_info = 1;


文章来源: dpkg-shlibdeps: error: no dependency information found for