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

libc6 2.1.94, or rather, libdb.so.[23] and libdb2.so.2

I've just installed libc6 2.1.94 on one of my systems, and the libdb breakage
turned out to be not as bad as I thought.  With one simple precaution, the
only thing that ended up not working straight away was sendmail which I'll
explain later.

Anyway, it seems that the situation in potato was that programs using libdb
was linked to libdb.so.2, libdb.so.3, or libdb2.so.2.  They are all distinct
sonames, so essentially they can be treated as different libraries (not
completely true, see the explanation of the sendmail breakage below).
Now the first two used to be in libc6 while the last one was in libdb2.

Now that the first two has disappeared from libc6, they can simply be
provided from a compatibility package, which can be built from our old glibc
sources without too much effort.  Symlinking libdb2.so.2 to the first two
as is currently done is not going to work since they're incompatible.

This is exactly what I did to avoid breaking most of the libdb using
programs on my system, I copied /lib/libdb.* from the old glibc into /lib
and removed the symlinks in the new libdb2 package.  The same result will
be achieved with a compatibility package containing /lib/libdb.*.

So here is a list of things we should do to have smooth upgrades to the
new libc6:
1. Create the libdb compatibility package and remove the symlinks from libdb2.
2. Make libc6 depend on it (for the benefit of those programs linked against
   libdb.so.2, since the old libc6.shlibs declared the dependency on libc6
   for it).
3. Make libdb2 depend on it as well (the old libc6.shlibs declared the
   incorrect dependency on it for those linked against libdb.so.3).

The end result should be compatible with RedHat since I've just checked and
they are not using libdb.so.[123] as the sonames of their new db libraries
in 7.0.

I'll make a libdb compatibility package available soon.  It'll basically be
our current libc6 package with everything removed except libdb.

OK, now for all you sendmail users :) It broke because libsasl7 has been
recompiled to use libdb2.so.2.  As you know, using libdb2.so.2 and libdb.so.3
at the same time is not going to work too well.  This isn't actually a libc6
problem per se, as it happens whenever we change libdb sonames.  My proposal
would be to make libsasl7 conflict with old packages depending on it.  There
aren't too many of them so this should be workable.
Debian GNU/Linux 2.2 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Reply to: