I'm currently attempting to use berkeley utils on the database files created by openldap, such as db_stat -m . However, I get nothing but an error message. I found this post in the archives, which seems to be the exact same problem:
http://www.openldap.org/lists/openldap-software/200401/msg00540.html . However, I don't see a solution, just that I might be inadvertently using the wrong type of
backend.Here's what I'm doing:
tamarin# pwd
/var/lib/ldap
tamarin# ls
alock __db.001 __db.003 __db.005 DB_CONFIG id2entry.bdb member.bdb ou.bdb
cn.bdb __db.002 __db.004 __db.006
dn2id.bdb log.0000000001 objectClass.bdb
tamarin# db_stat -m
db_stat: Program version 4.3 doesn't match environment version
db_stat: DB_ENV->open: DB_VERSION_MISMATCH: Database environment version mismatch
tamarin# db_recover
db_recover: Program version 4.3 doesn't match environment version
db_recover: Unacceptable log file log.0000000001: unsupported log version 11
db_recover: Invalid log file: log.0000000001
: Invalid argument
db_recover: PANIC: Invalid argument
db_recover: PANIC: DB_RUNRECOVERY: Fatal error, run database recovery
db_recover: DB_ENV->open: DB_RUNRECOVERY: Fatal error, run database recovery
All the while openldap works perfectly and I can add entries to the
directory using ldapadd etc. No complaints in /var/log/local4 either.
The database directive in slapd.conf is set to type "hdb", and the directory directive to /var/lib/ldap. When starting slapd with -d 4 the following line is printed to stdout: "bdb_db_open: dc=test,dc=com". I've tried to specify "bdb" as well, still same result when running db_stat. The way I understood the docs, hdb is merely bdb with a special structure. Anyway: What I haven't set in my
slapd.conf is anything under the section "Load dynamic backend modules". In particular, I've left the following directives commented out:
# modulepath /usr/lib64/openldap
# moduleload back_bdb.la
# moduleload back_ldap.la
# moduleload back_ldbm.la
# moduleload back_passwd.la
# moduleload back_shell.la
I tried enabling the modulepath and moduleload directive for back_bdb.la but openldap fails to launch saying the module can't be found, which is not very strange as /usr/lib64/openldap does not exist. Are these modules needed to successfully specify hdb in
slapd.conf's database-directive, and does it revert to back-ldbm if not found?
As far as program versions go, I'm not very proficient with *NIX, so I've used yum installs for everything rather than attempt to compile things myself. IHere are the versions:
- db4-utils-4.3.29-9.fc6 (db_stat etc)
- openldap-servers-2.3.27-8
- openldap-2.3.27-8
I'm obviously going wrong somewhere, but where?