BDB Nightmare

Akshay Kumar akshay at cs.columbia.edu
Sat Oct 23 06:02:43 EDT 2004


Fixed.

Like Dominic pointed out bdb was broken.

Making it with

	make LIBSO_LIBS="-lpthread" LIBXSO_LIBS="-lpthread"

fixed it.

So now finally the following are working in /spare/local:

bdb-4.2.52, SASL 2.1.19, Openldap 2.2.17, Sendmail 8.13.1, Cyrus 2.2.8,
apache and silkymail.

Believe it or not there was a good reason for putting all of them in a
non-standard location. Namely the rdist setup at work overwrites
everything that is not precioused everyday at 4am. Updating the master
would have broken a lot of other mail servers that were not built with
SASLv2 and using old bdb and sendmail-8.12. Also sasl was not built with
ldap.

I am going to wait for rhel as 4 till I build a new master, till then this
should work fine.


Thanks and Best,
Akshay

On Sat, 23 Oct 2004, Dominic Ijichi wrote:

> Quoting Akshay Kumar <akshay at cs.columbia.edu>:
>
> > Hi,
> >
> > Thanks for the reply.
> >
> > I am running Redhat 9 with updates from Progeny. I can't upgrade the OS
> > either.
>
> nice, lucky you :)
>
> > ldd -r /spare/local/lib/libdb-4.2.so give the following output:
> >
> >         libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
> >         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x55555000)
> > undefined symbol: pthread_condattr_setpshared
> > (/spare/local/lib/libdb-4.2.so)
> > undefined symbol: pthread_mutexattr_destroy
> > (/spare/local/lib/libdb-4.2.so)
> > undefined symbol: pthread_mutexattr_setpshared
> > (/spare/local/lib/libdb-4.2.so)
> > undefined symbol: pthread_mutexattr_init
> > (/spare/local/lib/libdb-4.2.so)
> > undefined symbol: pthread_mutex_trylock (/spare/local/lib/libdb-4.2.so)
>
> this means your berkeley db4.2 libs are broken.  try recompiling with -lpthread.
>    i think you can either try LIBS='-lpthread' ./configure, or run configure and
> amend resulting Makefile LIBS line with -lpthread.  iirc, i had similar problems
> when redhat introduced ntpl thread libs out of the blue.
>
> > I also have the following rpms of an older version:
> >
> > db4-4.0.14-20
> > db4-devel-4.0.14-20
>
> ok, theoretically these shouldn't get in the way.
>
> > I can't uninstall them as I need this for other dependencies which is why
> > I am using /spare/local.
>
> fair enough.  it is possible, although particularly with berkeley db4 not
> recommended, to force remove the rpms with 'rpm -e db4 db4-devel --nodeps' and
> drop the /spare/local/lib into ld.so.conf to fill in the gaps.  i've done this
> numerous times on redhat with ssl and ldap where the libs dont vary quite as
> much from minor version to minor version, unfortunately with berkeley it's
> extremely sensitive and thus usually a really, really bad idea.
>
> > adding "LDFLAGS=-L/spare/local/lib -R/spare/local/lib" doesnt help either.
>
> hmm, this is more for solaris, i dont think it does much on linux.
>
> > /spare/local/lib is the top entry in ld.so.conf and I then ran ldconfig.
>
> unfortunately ldconfig silently inserts the 'system library paths' -ie /lib,
> /usr/lib before everything else.  i dont know how to change this, although would
> love to know how.
>
> > Everything else picks up the correct version, SASL, Sendmail, Openldap.
>
> as you're specifying --bdb-libdir and its ignoring it, i would recommend looking
> in the config.log for the test for this switch.  i'd hazard a guess and say it's
> failing because of the broken libraries, and thus falling back to the system db4
> libs it finds in /usr/lib.  fix these broken libs in /spare/local/lib and i
> suspect all will be well.
>
> good luck :)  let us know if this helps, i'm sure i'm not the only one in the
> past who has come up against this problem.
>
> dom
>
> >
> > ldd ./sendmail
> >         libsasl2.so.2 => /spare/local/lib/libsasl2.so.2 (0x2aad9000)
> >         libdb-4.2.so => /spare/local/lib/libdb-4.2.so (0x2aaed000)
> >         libpthread.so.0 => /lib/tls/libpthread.so.0 (0x2ab94000)
> >         libssl.so.4 => /lib/libssl.so.4 (0x2aba2000)
> >         libcrypto.so.4 => /lib/libcrypto.so.4 (0x2abd7000)
> >         libresolv.so.2 => /lib/libresolv.so.2 (0x2acce000)
> >         libcrypt.so.1 => /lib/libcrypt.so.1 (0x2ace0000)
> >         libnsl.so.1 => /lib/libnsl.so.1 (0x2ad0e000)
> >         libdl.so.2 => /lib/libdl.so.2 (0x2ad23000)
> >         libldap-2.2.so.7 => /spare/local/lib/libldap-2.2.so.7 (0x2ad27000)
> >         liblber-2.2.so.7 => /spare/local/lib/liblber-2.2.so.7 (0x2ad54000)
> >         libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
> >         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x2aaab000)
> >         libgssapi_krb5.so.2 => /usr/kerberos/lib/libgssapi_krb5.so.2
> > (0x2ad60000)
> >         libkrb5.so.3 => /usr/kerberos/lib/libkrb5.so.3 (0x2ad74000)
> >         libcom_err.so.3 => /usr/kerberos/lib/libcom_err.so.3 (0x2add2000)
> >         libk5crypto.so.3 => /usr/kerberos/lib/libk5crypto.so.3
> > (0x2add4000)
> >         libz.so.1 => /usr/lib/libz.so.1 (0x2ade4000)
> >
> >  ldd ./slapd
> >         libdb-4.2.so => /spare/local/lib/libdb-4.2.so (0x2aad9000)
> >         libsasl2.so.2 => /spare/local/lib/libsasl2.so.2 (0x2ab81000)
> >         libssl.so.4 => /lib/libssl.so.4 (0x2ab94000)
> >         libcrypto.so.4 => /lib/libcrypto.so.4 (0x2abc9000)
> >         libresolv.so.2 => /lib/libresolv.so.2 (0x2acc0000)
> >         libpthread.so.0 => /lib/tls/libpthread.so.0 (0x2acd2000)
> >         libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
> >         libdl.so.2 => /lib/libdl.so.2 (0x2ace1000)
> >         libgssapi_krb5.so.2 => /usr/kerberos/lib/libgssapi_krb5.so.2
> > (0x2ace5000)
> >         libkrb5.so.3 => /usr/kerberos/lib/libkrb5.so.3 (0x2acf8000)
> >         libcom_err.so.3 => /usr/kerberos/lib/libcom_err.so.3 (0x2ad56000)
> >         libk5crypto.so.3 => /usr/kerberos/lib/libk5crypto.so.3
> > (0x2ad58000)
> >         libz.so.1 => /usr/lib/libz.so.1 (0x2ad68000)
> >         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x2aaab000)
> >
> > and say for openldap I used this:
> >
> >
> > env "CPPFLAGS=-I/spare/local/include -I/usr/kerberos/include"
> > "LDFLAGS=-L/spare/local/lib" ./configure --prefix=/spare/local
> > --enable-ldap --enable-bdb
> >
> >
> >
> > Its just cyrus that has a problem with it, everything else finds the
> > correct version.
> >
> >
> > Best,
> > Akshay
> >
> >
> >
> > On Sat, 23 Oct 2004, Dominic Ijichi wrote:
> >
> > > Quoting Akshay Kumar <akshay at cs.columbia.edu>:
> > >
> > > > Has anyone had any luck using the lastest version of BDB 4.2.52 w/ the
> > > > cyrus 2.2.8?
> > > >
> > > > I compiled Berkeley DB 4.2.52. I also succesfully build sendmail, sasl
> > and
> > > > openldap against this version installed in /spare/local.
> > > > But I am having problems getting cyrus-imap to use this version.
> > > >
> > > > I tried:
> > > >
> > > > env "CPPFLAGS=-I/spare/local/include -I/usr/kerberos/include"
> > > > "LDFLAGS=-L/spare/local/lib" ./configure --prefix=/spare/local
> > > > --with-cyrus-prefix=/spare/local/cyrus --with-bdb=/spare/local
> > > > --with-bdb-libdir=/spare/local/lib
> > > > --with-bdb-incdir=/spare/local/include --with-snmp=/spare/local/lib
> > > >
> > > > make depend
> > > > make all CFLAGS=-O
> > > >
> > > > BDB is installed in /spare/local
> > > >
> > > > Syslog throws the following error:
> > > >
> > > > Oct 20 11:28:19 test ctl_cyrusdb[18987]: incorrect version of Berkeley
> > db:
> > > > compiled against 4.2.52, linked against 4.0.14
> > >
> > > hi, you dont say what OS you're using, which doesnt help much here...
> > >
> > > looks like its picking up the correct db.h but not the correct libdb-4.so.
> > if
> > > its linux, make sure you haven't got the db4 and db4-devel rpms installed,
> > as
> > > even if you put /spare/local/lib in /etc/ld.so.conf it will still look in
> > > /usr/lib first which is where the system db4 rpm throws the libs.  you
> > could try
> > > changing 'LDFLAGS=-L/spare/local/lib" to 'LDFLAGS=-L/spare/local/lib
> > > -R/spare/local/lib".  if you use LD_LIBRARY_PATH, put /spare/local/lib in
> > first,
> > > or at least before /usr/lib.  if you're using crle/ldconfig then i'm not
> > sure
> > > how you override the system lib paths, if you can at all, i usually
> > forcibly
> > > remove the system db4 rpms to eliminate any conflict,but this is not
> > advised
> > > unless you know the OS really well.
> > >
> > > oh, also make sure your libs have built correctly, do 'ldd -r
> > > /space/local/lib/libdb-4.2.so' and make sure you don't get any errors.
> > >
> > > ------------------------------------------
> > > This message was penned by the hand of Dom
> > >
>
>
> ------------------------------------------
> This message was penned by the hand of Dom
> ---
> Cyrus Home Page: http://asg.web.cmu.edu/cyrus
> Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
> List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
>
---
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html




More information about the Info-cyrus mailing list