dpkg-shlibdeps: error: no dependency information found for
Solution 1
use:
override_dh_shlibdeps:
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
if your rule file hasn't the dh_shlibdeps call in it. That's usually the case if you've
%:
dh $@
as only rule in it ... in above you must use a tab and not spaces in front of the dh_shlibdeps
Solution 2
If you want it to just ignore that flag, change the debian/rules line from:
dh_shlibdeps
to:
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
Solution 3
Yet another way, without modifying build scripts, just creating one file.
You can specify local shlib overrides by creating debian/shlibs.local
with the following format: library-name soname-version dependencies
For example, given the following (trimmed) ldd /path/to/binary
output
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)
The contents of debian/shlibs.local
would be:
libevent-2.0 5 libevent-2.0
libgcrypt 20 libgcrypt
libpthread 0 libpthread
The "dependencies" list (third column) doesn't need to be 100% accurate - I just use the library name itself again.
Of course this isn't needed in a sane debian system which has this stuff defined in /var/lib/dpkg/info
(which can be used as inspiration for these overrides). Mine isn't a sane debian system.
Solution 4
Instead of merely ignoring the error, you might also want to fix the source of the error, which is usually either a missing or an incorrect package.shlibs
or package.symbols
file in package which contains the shared library triggering the error.
[1] documents how dpkg-shlibdeps
uses the package.shlibs
resp. package.symbols
, files, [2] documents the format of the package.shlibs
and package.symbols
files.
- [1] https://manpages.debian.org/jessie/dpkg-dev/dpkg-shlibdeps.1.en.html
- [2] https://www.debian.org/doc/debian-policy/ch-sharedlibs.html
Solution 5
You've just misspelled your export. It should be like this:
export DEB_DH_SHLIBDEPS_ARGS_ALL=--dpkg-shlibdeps-params=--ignore-missing-info
Related videos on Youtube
user1370912
Updated on August 22, 2020Comments
-
user1370912 almost 4 years
I'm compiling a deb package and when I run dpkg-buildpackage I get:
dpkg-shlibdeps: error: no dependency information found for /usr/local/lib/libopencv_highgui.so.2.3 ... make: *** [binary-arch] Error 2
This happens because I installed the dependency manually. I know that the problem will be fixed if I install the dependency (or use checkinstall), and I want to generate the package anyway because I'm not interested on dependency checking. I know that I can give to dpkg-shlibdeps the option
--ignore-missing-info
which prevents a fail if dependency information can't be found. But I don't know how to pass this option to dpkg-shlibdeps since I'm using dpkg-buildpackage and dpkg-buildpackage calls dpkg-shlibdeps...I have already tried:
sudo dpkg-buildpackage -rfakeroot -d -B
And with:
export DEB_DH_MAKESHLIBS_ARG=--ignore-missing-info
as root.
Any ideas?
-
umläute about 12 yearsthis seems to be an extraordinary dangerous idea. if you want to replace binaries, you should at least try to put the alternatives into /usr/local/
-
knocte over 11 yearswhat if the debian/rules file doesn't contain that line?
-
Wes Hardaker over 11 yearsSome line must be triggering that message, which means there must be some rule that is calling dpkg-shlibdeps. If it's not the dh_shlibdeps wrapper script, then what is it?
-
Piotr Dobrogost over 6 yearsIn case where the package you're building provides private shared libraries the better approach is to use the
-ldirectory
option ofdpkg-shlibdeps
– see manpages.debian.org/testing/dpkg-dev/dpkg-shlibdeps.1.en.html -
Stéphane about 5 years@WesHardaker In the case of CPack, there is no debian/rules file.
-
Alexis Wilke over 3 yearsThat was close but pretty useless if you depend on the very library that breaks the build (plus the way you have it, it creates a circular dependency). It works for me if I change the dependency name to an existing library. In my package, I used:
libnvbuf_utils 1.0.0 libgcc1
and now I get my package built.libgcc1
is a given is you have compiled executables. As you mentioned, you'll see the list of libraries usingldd
so you can pick any one of them from there. You could also check the very library you're having a problem with usingobjdump -x ...
to see what it depends on. -
Alexis Wilke over 3 yearsOuch! Yeah... Don't do that. Not a good solution. @dequis had the very solution you want to use, but the dependency he proposed was not going to work (i.e. depend on yourself is bad, but since that's the very library which needs to be properly defined, it will still be wrong. I put a comment with what I've done and it works like a charm.)