dpkg-shlibdeps:错误:找不到依赖关系信息

我正在编译一个deb包,当我运行dpkg-buildpackage时,我得到:

dpkg-shlibdeps: error: no dependency information found for /usr/local/lib/libopencv_highgui.so.2.3 ... make: *** [binary-arch] Error 2 

发生这种情况是因为我手动安装了依赖项。 我知道,如果我安装依赖项(或使用checkinstall),问题将得到解决,而且我想要生成包,因为我对依赖检查不感兴趣。 我知道我可以给dpkg-shlibdeps选项--ignore-missing-info ,它可以防止依赖信息找不到的失败。 但我不知道如何将此选项传递给dpkg-shlibdeps,因为我正在使用dpkg-buildpackage和dpkg-buildpackage调用dpkg-shlibdeps …

我已经试过了:

 sudo dpkg-buildpackage -rfakeroot -d -B 

与:

 export DEB_DH_MAKESHLIBS_ARG=--ignore-missing-info 

作为根。

有任何想法吗?

使用:

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

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

 %: dh $@ 

作为唯一的规则。

如果你想让它忽略这个标志,把debian / rules行改为:

 dh_shlibdeps 

至:

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

另一种方法是,不修改构建脚本,只是创建一个文件。

您可以通过使用以下格式创建debian/shlibs.local来指定本地shlib覆盖 : 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系统。

而不是仅仅忽略错误,你可能还想修正错误的来源,通常包含丢失或不正确的package.shlibspackage.symbols文件,其中包含触发错误的共享库。

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

dpkg-buildpackage使用make来处理debian / rules。 在这个过程中,dpkg-buildpackage可能会调用dpkg-shlibdeps。

因此,通过修改包构建过程的一部分的正确方法是编辑debian / rules。 没有看到实际的debian /规则,很难再给你提示。

你刚刚拼写出口。 应该是这样的:

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

你可以使用这个:

 dh_makeshlibs -a -n 

恰好在dh_install之后

最后我用蛮力的方式做到了:

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

 my $ignore_missing_info = 0; 

 my $ignore_missing_info = 1;