[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Packaging a shared library



On Mon, Jun 12, 2000 at 05:25:36PM +0200, Ron Rademaker wrote:
> I'm making a debian package that contains 1 thing: a shared library, it
> the first thing I'm ever packaging. Now lintian gives an error that
> there's no shlibs, it also says stuff about it being intential and so. I
> think I don't need this shlibs, but I want to make sure. There's no binary
> that depends on the shared library and as far as I understood from the
> packaging manual that's what this shlibs is for, right?

If you're packaging a shared library, you'll always need a .shlibs file for
it. Obviously a shared library is no use without some binary that's going
to use it, right? What the .shlibs file does is list libaries & version
numbers in the appropriate package, and the package that a binary linked
against that libary should depend on. Ie. so if we're compiling bash, which
is linked against libreadline 4, ie:

$ ldd /bin/bash
libreadline.so.4 => /lib/libreadline.so.4 (0x4001e000)
--snip--

$ dpkg -S /lib/libreadline.so.4
libreadline4: /lib/libreadline.so.4
$

So it (dpkg-shlibs) goes and looks in /var/lib/dpkg/info/libreadline4.shlibs,
which consists of:
libreadline    4       libreadline4 (>= 4.1)
libhistory     4       libreadline4 (>= 4.1)

Thus the ${shlibs:Depends} will be substituted with 'libreadline4 (>= 4.1)',
along with the packages in the shlibs files of other package libaries which
ldd output.

> So my question now is: what should I do? Just ignore the error or make
> some kind of dummy shlibs? Or mail the lintian maintainer (like the error
> says)? Or am I wrong and do I need a shlibs after all, if yes: what should
> it look like??

It's likely that you'll need a shlibs file. The only exception will be for
a program like muttzilla, or similar where the shared lib only provides
a standard API for another program (ie. it is a plugin). If this is the case,
it probably wouldn't hurt to create a .shlibs file anyway, and stick it in
the package.

If you're using debhelper, putting a .shlibs into a package is _easy_.
Just put:

dh_makeshlibs

in your debian/rules, in a suitable place (I do it just before
dh_installdeb). Read the manpage for dh_makeshlibs for more info.

Otherwise I think you have to put a 'shlibs' file in the DEBIAN directory
under your install root. (correct me if I'm wrong, this is just the result
of what debhelper does automatically...)


> 
> Ron Rademaker
> 
> PS. Could you cc to me when replying, I'm not subscribed to this list.

No probs :)

Hope this helps,

Timshel

-- 
Timshel Knoll <timshel@pobox.com>  Second year Computer Science, RMIT
               http://yallara.cs.rmit.edu.au/~tiknoll/
         For GnuPG public key: finger timshel@ozemail.com.au

Attachment: pgpqRzaeymhuA.pgp
Description: PGP signature


Reply to: