Package: postfix Version: 2.5.5-1.1 Severity: normal Due to an unfortunate partition layout, my desktop machine has /usr as a subdir of /srv:
lrwxrwxrwx 1 root root 7 13. Jul 2008 /usr -> srv/usr
Ever since that apt has been nagging me about not being able to
upgrade/configure postfix since it couldn't start it in the postinst.
I finally found time to debug this:
/etc/init.d/postfix:
running() {
queue=$(postconf -h queue_directory 2>/dev/null || echo /var/spool/postfix)
if [ -f ${queue}/pid/master.pid ]; then
pid=$(sed 's/ //g' ${queue}/pid/master.pid)
# what directory does the executable live in. stupid prelink systems.
dir=$(ls -l /proc/$pid/exe 2>/dev/null | sed 's/.* -> //;
s/\/[^\/]*$//')
if [ "X$dir" = "X/usr/lib/postfix" ]; then
echo y
fi
fi
}
The problem is that $dir will be /srv/usr/lib/postfix here. I've fixed
it locally by using bash pattern matching instead.
Wouldn't it be enough to check the basename of the directory, the
basename of the executable, or just if there is a process with that pid
running (kill -0) ?
Christoph
--
[email protected] | http://www.df7cb.de/
signature.asc
Description: Digital signature

