Subject: DEINSTALL scripts for daemon packages
To: None <tech-pkg@netbsd.org>
From: Jon Buller <jon@bullers.net>
List: tech-pkg
Date: 05/23/2001 21:49:32
I'll quote parts of an exchange between myself and agc, rather
than paraphrase and rewrite big parts...
jonb> On Mon, May 21, 2001 at 01:10:33PM -0700, Jon Buller wrote:
jonb> I was thinking about one other event I noticed when I unintentionally
jonb> pkg_delete'd postgresql. The server was still left running. This
jonb> left me in the slightly awkward position that I couldn't properly
jonb> shutdown the database, since the tools to do so had already been
jonb> removed. I didn't think or care about it at the time, but the
jonb> thought has since crossed my mind that perhaps any package that
jonb> runs something as a daemon should stop the daemon(s) when removing
jonb> the package to allow an orderly shutdown.
jonb> As a very quick initial investigation, I found that there are 49
jonb> packages that list something in etc/rc.d in their PLIST. Assuming
jonb> that this is roughly the number of packages that run daemons, and
jonb> that my statements above are accepted, there should be a DEINSTALL
jonb> script in each one to stop the daemons before the pkg_delete
jonb> finishes. However, only 16 of those 49 packages have a DEINSTALL
jonb> script, and none of those 16 deinstall scripts have any occurance
jonb> of the letter pair "rc".
agc > On Tue, 22 May 2001 08:25:08 +0100, Alistair Crooks wrote:
agc > Sounds like an excellent idea to me, and something that would add huge
agc > value to pkgsrc - I don't think we've really had a good look at our
agc > rc.d stuff already.
agc > Having packages DTRT as well would be good.
So, now for a few questions and comments:
I have since altered my ideas on this a bit. I now think it would
be better to check if the daemon in question is running, and if
it is, print some sort of message and abort the pkg_delete.
1) Anyone want to recommend if the DEINSTALL script should abort the
pkg_delete if the daemon involved is running, or kill the daemon
and continue?
2) Are there any known exceptions to this? (That is, anyone know
of a time/place/package where this would be a bad idea. I assume
one may turn up while I'm looking, but thought an early warning
might help me think of what to do before I commit an obviously
stupid thing in a place I didn't think enough about it, or didn't
realize that it should be an exception.)
3) Anyone have any other suggestions?
4) Anyone want to help?
Jon