我编译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
作为根。
有任何想法吗?
使用:
override_dh_shlibdeps:
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
如果您的规则文件有没有dh_shlibdeps调用它。 这通常情况下,如果你已经
%:
dh $@
因为只有在它统治。
如果你希望它只是忽略该标志,在debian /规则专线改变:
dh_shlibdeps
至:
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
还有一种方法,而不需要修改构建脚本,只创建一个文件。
您可以指定本地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系统。
而不是仅仅忽略错误,你也可能要修正这个错误,这通常是要么缺失或不正确的源package.shlibs
或package.symbols
在包文件,其中包含共享库引发错误。
[1]的文件如何dpkg-shlibdeps
使用package.shlibs
RESP。 package.symbols
,文件[2]记载了格式package.shlibs
和package.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
你刚刚输入错误的出口。 它应该是这样的:
export DEB_DH_SHLIBDEPS_ARGS_ALL=--dpkg-shlibdeps-params=--ignore-missing-info
的dpkg-buildpackage使用作出处理的debian /规则。 在这个过程中,或dpkg-buildpackage它可能调用的dpkg-shlibdeps。
因此,适当的方式来传递修改包建立过程的一部分,是编辑的Debian /规则。 很难给你更多的提示,没有看到实际的debian /规则。
最后我做到了以野蛮方式:
我编辑的脚本在/ usr / bin中/ dpkg的-shlibdeps,改变这个:
my $ignore_missing_info = 0;
至
my $ignore_missing_info = 1;