Re: dpkg-slibdep, fakeroot, sonames
On Sat, 6 Sep 1997, joost witteveen wrote:
> But fakeroot execs its children with:
> LD_PRELOAD=/usr/lib/libfakeroot.so.0
> so its children do use it:
>
> To me, this output looks as though the soname of libfakeroot is indeed
> "0", and not "0.0", but this is from my "debian/rules binary" stage:
>
> dpkg-shlibdeps ./fakeroot
> dpkg-shlibdeps.orig: warning: unable to find dependency information for shared library /usr/lib/libfakeroot (soname 0.0, path /usr/lib/libfakeroot.so.0.0, dependency field Depends)
> dpkg-gencontrol
>
> Does anyone know why dpkg-shlibdeps thinks the /usr/lib/libfakeroot soname
> is 0.0?
Are you sure you are using the correct `LD_PRELOAD'? This is what I get:
----
cespedes@salmon:/tmp$ fakeroot
sh-2.01# echo $LD_PRELOAD
/usr/lib/libfakeroot.so.0.0
sh-2.01# dpkg-shlibdeps ls
dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot (soname 0.0, path /usr/lib/libfakeroot.so.0.0, dependency field Depends)
sh-2.01# LD_PRELOAD=/usr/lib/libfakeroot.so.0
sh-2.01# dpkg-shlibdeps ls
dpkg: /usr/lib/libfakeroot.so.0 not found.
dpkg-shlibdeps: warning: could not find any packages for /usr/lib/libfakeroot.so.0 (/usr/lib/libfakeroot.so.0)
dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot (soname 0, path /usr/lib/libfakeroot.so.0, dependency field Depends)
----
So, with the correct `LD_PRELOAD', it gets the correct soname.
BTW, the line `dpkg: /usr/lib/libfakeroot.so.0 not found' is due to
a bug in your package: the file /usr/lib/libfakeroot.so.0 should be
included in the .deb: From the Debian packaging manual, version
1.4.0.19, chapter 12:
``Secondly, your package should include the symlink that ldconfig
would create for the shared libraries.''
> BTW, I do have a shlibs file setup for libfakeroot (soname "0"):
>
> $ cat /var/lib/dpkg/info/fakeroot.shlibs
> libfakeroot 0 libc6
Hmmm, that's not correct. The value in LD_PRELOAD is
`/usr/lib/libfakeroot.so.0', and not `fakeroot.so.0', so the full path
should be included to that file, this way:
/usr/lib/libfakeroot 0 libc6
> PS, note that the current fakeroot version (-8) still does
> LD_PRELOAD=/usr/lib/libfakeroot.so.0.0 (with extra 0), but I
> wanted to change that in -9. Doesn't seem to work.
Well, it works for me. If you still have problems, mail me.
--
Juan Cespedes
--
TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to
debian-devel-request@lists.debian.org .
Trouble? e-mail to templin@bucknell.edu .
Reply to: