[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Request for Comments: Standardize enabling/disabling of system services


currently we seem to have no clear policy in Debian how to handle
the question: "Shall a service started once its installed or not?"
The current state of affairs is that some packages start after beeing
installed, some don't, because they don't have a reasonable default
configuration and some don't, because the maintainer does not like
this approach.
We also don't seem to have a clear consense how to disable/temporarily
deactivate services. The current situation is that some packages include
a file in /etc/default with a variable "RUN", "RUN_<PACKAGENAME>",
"START_ON_BOOT" or even another possible name
which decides weither a service runs when invoke-rc.d <service> start
is issued or not. Some other packages do not follow this approach
and start or don't start as the maintainer sees fit.

There are clear disadvantages with this:
- The administrator has no way to influence the decision weither
a service shall run directly after installation.
- The administrator needs to apply and know about several different
ways about how to enable/disable services.

I know there are constraints where a local-admin decision "start/don't
after installation" cannot be followed. Still, I would like to work
on the following idea and implement it somewhere during the
squeeze (or +1) release cycle.

--- IDEA START ---
* We establish the practice, that by default no package does include
  an enabled RUN_<SERVICE> variable in its /e/d/<packagename> file. Instead
  every service shall include such a variable, but commented. The default
  of the init script should be to start, unless RUN_<SERVICE> says different.
  The name of the variable should be standardized to RUN_<SERVICE>.

* We add a new configuration file (possibly /etc/rc.conf because thats
  a file that exists in different distributions and has a similar meaning)
  which can have the following configuration settings:

   * RUN_NEW_SERVICES_AFTER_INSTALL=<yes|no|1|0|true|false>
   * RUN_<SERVICE>=<yes|no|1|0|true|false>

  This configuration file must not be modified by maintainer scripts.
  The rationale for the RUN_<SERVICE> entries is that an admin can have
  RUN_NEW_SERVICES_ON_INSTALL=false, but decide for a certain service
  that it shall start after he installed it before.

* We let the maintainer scripts respect the RUN_NEW_SERVICES_ON_INSTALL
  setting on a new installation.

* We develope a policy.d layer that respects the RUN_<SERVICE> settings from
  rc.conf and /e/default/* and permits/denies start of services, based
  on these settings. Init scripts shall only start if the service is allowed
  to start (RUN_* setting or RUN_NEW_SERVICES_ON_INSTALL) and if they have
  a sensible default configuration (which pays due to the
  before mentioned contraints). This policy.d layer should be of priority
  Standard. Eventually we should extend the policy.d concept in a way that
  permits to have more than one policy.d layer at a time, so that a user can
  still use an (additional) own layer.

* A bonus would be to have a utility to enable/disable services.
--- IDEA END ---

I post this as a proposal/request-for-comments to debian-devel, because
I'd like to hear if anybody thinks working on this is valueable and
because I'd like to know, who is interested to actually work on this idea
(besides myself). I also hope that some of you have some ideas
to enhance the idea.

Best Regards,

Attachment: signature.asc
Description: Digital signature

Reply to: