Comment 10 for bug 672438

Revision history for this message
perpetualrabbit (perpetualrabbit) wrote :

@Martin Pitt,

I did some more debugging. What I did is try to move a working cups config from a redhat server to a new ubuntu natty server. So I stopped cups, renamed the ubuntu /etc/cups to /etc/cups.ubuntu. The new config dir was /etc/cups.lorentz, and I made a symlink /etc/cups->/etc/cups.ubuntu. This is when start cups quits working, and starts looping in /etc/init/cups.conf. It loops through the entire script by the way (pre-start, post-start and possibly also exec cupsd -f), not just the post-start. The cups.lorentz config also has a Listen /var/run/cups/cups.sock line, so that is not the problem. I think that it has to do with apparmor not liking a link instead of a directory at /etc/cups, or something like that.

When I just rename the /etc/cups.lorentz directory to /etc/cups (removing the link first), start cups suddenly works.

With the link in place, start cups just keeps looping, which is a bug. It should either just work or give me some apparmor complaint if links to config files or directories are not OK. If it is an apparmor issue, replacing config files/dirs by links is likely a problem for other services as well, like ldap, nfs, fstab etc.

I thought there was one obvious bug in your loop in /etc/init/cups.conf: you forgot a $ in the arithmetic expansion.
Your line is: timeout=$((timeout-1))
   which I thought would never work, and it should be something like this:
     timeout=$((${timeout}-1))
But. I just checked and it seems your line actually _does_ work. Even with the missing $. I can't find that feature in the bash man page.