Still encountered in upgrade to 14.04, due to a few cases of a missing -h parameter to grep when finding the value of olcDbDirectory. In my case the suffix is stored in two backends, one of them on disk, causing a grep with more than one file on the command line, and thus the result of grep beeing prefixed with "<filename>:", which again causes "| cut -d: -f 2" to return "olcDbDirectory" instead of "/var/lib/ldap".
-- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to openldap in Ubuntu. https://bugs.launchpad.net/bugs/322944 Title: slapd upgrade fails: chown: cannot access `olcDbDirectory\nolcDbDirectory': No such file or directory Status in “openldap” package in Ubuntu: Triaged Bug description: Binary package hint: slapd slapd upgrade fails with: iain@stronginthearm:~$ sudo apt-get -f install Reading package lists... Done Building dependency tree Reading state information... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 1 not fully installed or removed. After this operation, 0B of additional disk space will be used. Setting up slapd (2.4.11-0ubuntu6.1) ... Backing up /etc/ldap/slapd.d/ in /var/backups/slapd-2.4.11-0ubuntu6... done. chown: cannot access `olcDbDirectory\nolcDbDirectory': No such file or directory dpkg: error processing slapd (--configure): subprocess post-installation script returned error exit status 1 Errors were encountered while processing: slapd E: Sub-process /usr/bin/dpkg returned an error code (1) The attempt to parse out the olcDbDirectory in /var/lib/dpkg/info/slapd.postinst:get_directory() fails if there is more than one matching file, which there is on my system - there's an emacs backup file (i.e. olcDatabase={1}hdb.ldif~). Made the following patch: --- slapd.postinst 2009-01-29 22:32:24.000000000 +0000 +++ /var/lib/dpkg/info/slapd.postinst 2009-01-29 22:37:55.000000000 +0000 @@ -229,7 +229,7 @@ get_directory() { # {{{ # Returns the db directory for a given suffix if [ -d "${SLAPD_CONF}" ] && echo `get_suffix` | grep -q "$1" ; then - grep "olcDbDirectory:" `grep -l "olcSuffix: $1" ${SLAPD_CONF}/cn\=config/olcDatabase*` | cut -d: -f 2 | sed 's/^ *//g' + grep -H "olcDbDirectory:" `grep -l "olcSuffix: $1" ${SLAPD_CONF}/cn\=config/olcDatabase*` | head -1 | cut -d: -f 3 | sed 's/^ *//g' elif [ -f "${SLAPD_CONF}" ]; then # Extract the directory for the given suffix ($1) for f in `get_all_slapd_conf_files`; do which is more robust in the face of multiple matches. Extra credit is given for explicitly grepping out junk. # lsb_release -rd Description: Ubuntu 8.10 Release: 8.10 # apt-cache policy slapd slapd: Installed: 2.4.11-0ubuntu6.1 Candidate: 2.4.11-0ubuntu6.1 Version table: *** 2.4.11-0ubuntu6.1 0 500 http://gb.archive.ubuntu.com intrepid-updates/main Packages 100 /var/lib/dpkg/status 2.4.11-0ubuntu6 0 500 http://gb.archive.ubuntu.com intrepid/main Packages To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/openldap/+bug/322944/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : [email protected] Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp

