At the moment I am upgrading all my infrastructure. Today I tried to upgrade one of my openldap-slaves and it failed so hard. It stucked during dpkg --configure. In my syslog some errors appeared:
bdb(dc=feedyourhead,dc=at): BDB1538 Program version 5.3 doesn't match environment version 5.1 bdb(dc=feedyourhead,dc=at): BDB1566 txn_checkpoint interface requires an environment configured for the transaction subsystem bdb_db_close: database "dc=feedyourhead,dc=at": txn_checkpoint failed: Invalid argument (22). backend_startup_one (type=hdb, suffix="dc=feedyourhead,dc=at"): bi_db_open failed! (-30969) bdb_db_close: database "dc=feedyourhead,dc=at": alock_close failed
So I was doomed. My ldap was a mess. But I fixed it using the following commands:
cp -r /var/lib/ldap /opt/ldap_backup cd /var/lib/ldap db5.1_recover -v -h . db5.1_upgrade -v -h . *.bdb db5.1_checkpoint -v -h . -1 /etc/init.d/slapd start
Now I had a working ldap again. But whenever I tried to use apt-get, I got messages like:
slapd (2.4.40+dfsg-1+deb8u1) wird eingerichtet ... Backing up /etc/ldap/slapd.d in /var/backups/slapd-2.4.31-2+deb7u1... done. Moving old database directories to /var/backups: There are leftover files in /var/lib/ldap. This will probably break creating the initial directory. If that's the case please move away stuff in there and retry the configuration. Loading from /var/backups/slapd-2.4.31-2+deb7u1: Directory /var/lib/ldap for dc=feedyourhead,dc=at not empty, aborting.
Even a "dpkg --configure -a" did not work. I had already fixed the ldap-database, so I could just skip this configure-job. I opened /var/lib/dpkg/info/slapd.postinst and commented the following lines:
# Configuration. # if is_initial_configuration "$@"; then # postinst_initial_configuration # else # postinst_upgrade_configuration # fi
I know, it's a very ugly fix. But it worked for me and I have to say it was a very ugly problem too...