Re: update-translator script for review
> Yes, they are handled by scripts in /etc/init.d/foobar which are linked to
> from /etc/rc?.d directories. The scripts accept start/stop/restart/reload as
> options, and use teh start-stop-daemon program.
That is not what I meant. That is the mechanism by which a daemon is
started running or a running daemon is affected. That mechanism is
different for translators. I am talking about the policy of which of these
actions (regardless of mechanism) to take when installing/upgrading/removing
> Should we use --recursive by default, or leave it to the package to decide
> if stacked translators make sense on this node? [update-translator will
> probably not manage file systems like ext2fs, so we only need to consider
> stacked translators]
I am not sure exactly what the question is here; what do you mean "by default"?
Stacking translators is definitely not what you want for most cases.
I am imagining that the translators installed by packages will mostly be
service naming points (such as /servers/*).
> What should we do if we install a new translator, but the node exists
> already (probably with a translator attached to it)? Should we act as if
> we upgrade (see next item)? Or should we fail with an error code (causing
> the package installation to abort and leaving the package in an unconfigured
> state)? Or should we ask the user? [note that asking the user must be
> minimzed for unattended installation]
My whole point was that how to deal with these situations is something that
debian policy should specify. This is not greatly different from any other
preexisting file that installing a package might clobber.
Personally, I hate having it ask the user (I won't tell you how many times
now I have left dpkg running overnight and come back in the morning to see
it waiting at some prompt with 99% of the work still left to do). I wish
all packagers would refuse to clobber unknown files of any kind, but that
is a policy issue.
> I think we should leave it to the package maintainer to decide between the
> following cases on upgrade:
> "-k"eep active translator,
> "-g"o away (ask nicely),
> "-fg" force to go away.
Is it left to the package maintainer to decide what to do about a daemon also?
> Should we fall back to "-k" if "-gf" or "-g" is aksed for but fails?
In fact, `-g' asks nicely and `-gf' asks "pretty please", but nothing in
fact forces an uncooperative translator. (I think we should perhaps change
this.) Consider goaway equivalent to sending a SIGTERM to a daemon; if the
daemon doesn't die after that, do you start a new one or do you leave the
old one running? -k leaves the old one running.
> Or should we look for the process and kill it if "-fg" is asked for and the
> translator doesn't want to die?
I hesitate to suggest this. It is error-prone, because there is no sure
way to know which process it is. I'm inclined to think we should beef up
settrans with a more forceful option.
> Or should we ask the user?
You are asking me policy questions again.
> On package removal, the script should be called with the additional
> options "-fg", okay? (at least one easy case ;) [ in some cases, package
> may want to prefer "-k" or "-g", but it should be noted that at least the
> purging issues a "rm $node" and implies "-g". This can be circumvented by
> using a bogus $node as argument.]
Note that `settrans -g NODE' will make the translator go away happily if
it's running, but `rm NODE' will get EISDIR if the translator wouldn't mind
going away but is providing a directory as the visible file. So I would
say always clear the translator before removing the node. Also, it depends
on `rm' not doing `stat' or anything on the node before trying to unlink
it--if `rm' does call `stat' or suchlike on the node, it will start up the
It might be desireable to use `-g' and just fail if the translator won't go
away (i.e. refuse to remove the package).