BDB Nightmare
Dominic Ijichi
dom at ijichi.org
Fri Oct 22 22:05:24 EDT 2004
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
More information about the Info-cyrus
mailing list