The default pidfile location is /var/run/slapd/slapd.pid, and the init
script does "mkdir $(dirname $pidfile)" during startup.
There is no /var/run/slapd...
However, your pidfile is set to /var/run/slapd.pid, so probably nothing is
creating /var/run/slapd.
Aha.
A workaround to get you going would be to change your pidfile setting to
/var/run/slapd/slapd.pid.
Done.
To restore sanity, you may want to
chown -R openldap:openldap /var/lib/ldap /etc/ldap/slapd.conf
Done.
(and /etc/ldap/slapd.d, if it exists)
It does not (I've renamed it for the moment as a means of forcing the init script to use slapd.conf, as it won't if /etc/ldap/slapd.d exists)
Ok. A quick test to see if that solves some of the problem.
Good news, slapd is now starting properly without manual intervention, and var/run/slapd/slapd.pid exists. Much rejoicing throughout the kingdom.
database bdb
And time to upgrade to MDB backend as well, but obviously with lower
priority, after the current fire has been put out. :)
Perhaps - I kept bdb because I'm working with older bdb databases; at some point I'll have to figure out how to convert.
I have no evidence that indexing is your problem, but in an odd situation
like yours, I might re-index just to rule that out:
sudo -u openldap slapindex -f /etc/ldap/slapd.conf -q
Hmm. The result of which is:
56c9ff8f bdb_db_open: database "dc=drbhome,dc=ca": database already in use. 56c9ff8f backend_startup_one (type=bdb, suffix="dc=drbhome,dc=ca"): bi_db_open failed! (-1) slap_startup failed