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

Re: Questions about library names



Jose Carlos Garcia Sogo <jose@jaimedelamo.eu.org> writes:
JCGS>  I'm trying to package a library, but I have some questions regarding
JCGS> the name the package should have.
JCGS> 
JCGS>  First of all, the policy says that the library package must something
JCGS> like libpackagesoname, so if the library that the package has looks
JCGS> like:
JCGS> 
JCGS> lrwxrwxrwx    1 jose     jose           17 abr 30 12:44 libgpgme.so ->
JCGS> libgpgme.so.0.3.0
JCGS> lrwxrwxrwx    1 jose     jose           17 abr 30 12:44 libgpgme.so.0 ->
JCGS> libgpgme.so.0.3.0
JCGS> -rwxr-xr-x    1 jose     jose       222895 abr 30 12:44
JCGS> libgpgme.so.0.3.0
JCGS> 
JCGS> the package must be called libgpgme0, isn't it?

Assuming that the soname of the library is libgpgme.so.0, yes.  This
is the name given after the -Wl,-soname,... parameter to gcc when the
library is built; running 'objdump --private-headers' on the library
file will also print the soname, and it's the name that appears when
you run 'ldd' on programs that depend on the library.

The .so link (libgpgme.so) should go in a separate -dev package along
with the header files.  This package should probably be named
libgpgme-dev.

JCGS> OK, let's say now that the current is increased, and the new name of the
JCGS> library is libgpgme.so.1.0.0. This means that I should change in the
JCGS> debian/control file the name of the package and it will become libgpgme1
JCGS> but, what happens with the old package (libgpgme0) and with the programs
JCGS> compiled against it?

The old package sticks around, and things that depend on it don't
break.  So you have:

-- Install libgpgme0_0.3.0-1, libgpgme-dev_0.3.0-1.
-- Install myapp, depends on libgpgme0.
-- Install libgpgme1_1.0.0-1, libgpgme-dev_1.0.0-1.  At this point you 
   still have myapp, which still depends on libgpgme0, which is still
   available.  (libgpgme1 won't fill the dependency; since the library 
   now has a different major version, its external interface has
   probably changed, so myapp would break if dynamically linked
   against it.)
-- Rebuild and install myapp, now depends on libgpgme1.

-- 
David Maze         dmaze@debian.org      http://people.debian.org/~dmaze/
"Theoretical politics is interesting.  Politicking should be illegal."
	-- Abra Mitchell



Reply to: