Re: LSB specification (or not) of /etc/init.d
Mark Brown <[email protected]> Fri, 6 May 2005 13:42:12 -0500
| Newsgroups | gmane.linux.lsb.discuss,gmane.linux.lsb.specification |
|---|---|
| Message-ID | <OFED7680B2.8A977446-ON05256FF9.00666A05-05256FF9.0066BE75@us.ibm.com> |
Mats- > 3. Use lsbinstall to provide both functions with a single invocation, > and don't try to describe "registration" and "activation" as separate > concepts; leave unspecified what step causes activation. In this case, > install_initd can be deprecated but we would continue to allow the LSB > 2.x behavior in LSB 3. My experience with the POSIX and UNIX base OS WGs is that option (3) would garner you the most consensus and create the least "invention" - both of which are Good Things at this stage. ------------------- Mark Brown/Austin/IBM STSM, UNIX/Linux OS Standards IBM Systems Group, Linux Technology Center [email protected] (512) 838-3926 [TL 678-3926) [email protected] wrote on 05/06/2005 11:33:50 AM: > > We don't seem to be able to come to consensus on the /etc/init.d > issue. The LSB 2.1 spec (and presumably earlier versions) did say > that initscripts are installed to /etc/init.d: > > 19366 8.4. Installation and Removal of init.d Files > 19367 > 19368 An init.d file is installed in /etc/init.d (which may be a > 19369 symlink to another location). This can be done by the package > 19370 installer. See Script Names>. During the package's > postinstall > 19371 script, the program "/usr/lib/lsb/install_initd" configures > 19372 the distribution's boot script system to call the package's > 19373 init.d file at the appropriate time. > > There's one viewpoint that the above is the right way to do things > (ignoring many of the imprecisions in the wording, I'm talking about the > intent conveyed): "everybody" has an /etc/init.d; and allowing installs > directly to this system location, the system's native package manager > can > get involved in management of this file, particularly doing "something > appropriate" if the initscript is marked as a configuration file. > > There's another viewpoint that says the LSB should not get this > specific about system locations; not all implementations indeed will > have /etc/init.d and should not be forced to (we've heard about schemes > with a fast-boot objective that may do something quite different), > and that it's better to abstract the precise details away - packages > should install their initscript to a package-private location (probably > /etc/opt/{package} or /etc/opt/{provider} as carved out by FHS) and then > ask the system to do the right thing to make it work. This seems to > have been the original intent for install_initd, but it ended up being > worded to require the script already be in /etc/init.d. > > In writing up lsbinstall, we attempted to restore the abstraction, and > in thinking about it, it seemed conceptually there were two distinct > steps: registration and activation. The former is getting a script into > a system-specific location, database, whatever; the latter is making > it actually activate appropriately on runlevel changes. The activation > details may change - the sysadmin may choose, for example, to no longer > start a daemon that used to be enabled, but leave the package installed. > So an installing package would likely do both steps, but leaving a > way for this to change later seemed appropriate. > > So in LSB 3 draft wording we describe a model where a package, after > installing, first calls lsbinstall for the "registration" step, then > calls install_initd for the "activation" step. > > However, the need for two steps seems to have proven unpopular; it's > also possible to describe only one step which combines > register+activate, > and leave it unspecified (i.e., leave to system-provided tools) how the > activation state is later manipulated. > > So it seems there are several possible courses of action (and > before anyone brings it up: yes, we're squarely into "invention" > space here, but this init-script abstration was already an > existing invention, we're still trying to get it right, and we're > working on an implementation for the lsbsi to make sure it's > actually reasonable to write one to what the spec says): > > 1. Make the /etc/init.d requirement more explicit (i.e., document > elsewhere in the LSB that this is a required directory-or-symlink), > and make the lsbinstall init-script install functions look just like > install_initd, which would mean install_initd can be deprecated > (or, equivalently, that there's no need for lsbinstall to worry > about this fuction). Effectively this is "do nothing" except for > promoting /etc/init.d a little more clearly. > > 2. Drop the /etc/init.d requirement and use lsbinstall to provide > the "registration" abstraction: lsbinstall causes the initscript > to go into the appropriate unspecified system location, and returns a > token (expected to be the name of the script) which can then be fed > to install_initd for activation. > > 3. Use lsbinstall to provide both functions with a single invocation, > and don't try to describe "registration" and "activation" as separate > concepts; leave unspecified what step causes activation. In this case, > install_initd can be deprecated but we would continue to allow the LSB > 2.x behavior in LSB 3. > > > _______________________________________________ > lsb-discuss mailing list > [email protected] > http://mail.freestandards.org/mailman/listinfo/lsb-discuss