Autor: Sheldon Hearn Datum: To: exim-users Betreff: Re: [Exim] failed to open DB file
On (2003/01/14 18:07), Martin Kaiser wrote:
> > In that case, it looks like you have a Berkeley DB version conflict.
>
> DB code is included in the libc on FreeBSD, right? Is there a way to
> figure out what version is included (other than cvsupping the complete 4.1
> sources)?
Correct. From the port's Makefile:
# DB_LIB_VERSION is the version of the Berkeley DB library to use, and
# may be 1, which corresponds to version 1.85 in the base system, or 4
# which depends on the databases/db4 port.
DB_LIB_VERSION?=1
You could find the version you have in libc by looking at
src/lib/libc/db/README, but rest assured that it's been 1.85 for a long
time. :-)
> The changes I made in Local/Makefile look like this:
> [...] > LOOKUP_DBM=yes
> LOOKUP_LSEARCH=yes [...]
> For compiling with Berkeley DB4, I changed OS/Makefile-FreeBSD (there
> might be better ways to do this):
>
> # FreeBSD always ships with Berkeley DB
> USE_DB=yes
> DBMLIB= -L/usr/local/BerkeleyDB.4.0/lib/ -ldb-4
>
> For the standard DB, there's just the USE_DB=yes line.
DB 1.85:
========
Okay, as long as you didn't set DBMLIB when you tried to use DB 1.85,
then I maintain that installing the version of Exim thus built, stopping
any existing Exim processes, deleting the hints databases and starting
up the newly installed Exim should have solved your problem. :-)
DB 4.0:
=======
The problem with DB 4.0 is that it's a moving target. If you're doing
everything right and it still doesn't work, I'd put the failure down to
a subtle API change.
BOTH:
=====
If this problem was driving _me_ mad, I'd start from scratch with DB
1.85, proving beyond a shadow of a doubt that this wasn't a horrible
problem of two distinct Exim binaries both being used to instantiate
processes that then proceded to stomp all over each others' hints
databases.