Call for Votes (Re: mixmaster /etc/default/*)
I hereby call for a vote on the resolution below, which I sent round a
draft of on Friday and formally proposed yesterday:
-8<-
(1) The REMAIL option should not be supplanted or supplemented by
anything in an /etc/default file. The current behaviour of the
mixmaster init script, to examine /etc/mixmaster/remailer.conf's
REMAIL option, is correct.
(2) Policy is clear and correct, and need not be changed.
-8<-
[ ] Choice K: Keep current behaviour and existing policy, as above.
[ ] Choice F: Further discussion
My vote is:
[1] Choice K: Keep current behaviour and existing policy, as above.
[2] Choice F: Further discussion
1. As very helpfully summarised by Peter Palfrader, the current
situation is as follows:
o The mixmaster package provides both the client and server
functionality.
o By default the server part (running a remailer) is not enabled.
o To configure mixmaster to run as a remailer the admin has to set
a dozen options in /etc/mixmaster/remailer.conf. Options like
email address, which formats they will accept, whether to run as
an exit or only as a middleman remailer, etc.
o One of those options is the REMAIL setting, which enables or
disables the remailing ("server") part of mixmaster.
o The init script has code to only try starting the mixmaster
daemon, which is only needed when it's being run as a remailer,
when the REMAIL option is actually set to "y" in that config
file.
2. The submitter has requested that instead of checking
/etc/mixmaster/remailer.conf for REMAIL being set to `y',
the init script should read a new setting out of a file in
/etc/default.
3. The submitter relies on this part of policy 9.3.2:
Often there are some variables in the init.d scripts whose
values control the behavior of the scripts, and which a system
administrator is likely to want to change. As the scripts
themselves are frequently conffiles, modifying them requires
that the administrator merge in their changes each time the
package is upgraded and the conffile changes. To ease the
burden on the system administrator, such configurable values
should not be placed directly in the script. Instead, they
should be placed in a file in /etc/default, which typically will
have the same base name as the init.d script. This extra file
should be sourced by the script when the script runs. [...]
4. The committee's role is not to interpret policy; rather our role
includes both determining the appropriate behaviour in a specific
case and also to specify the appropriate policy wording. However,
we should make our decisions based on the all of the available
information, and existing policy documents are a useful input to
that process.
5. The purpose of this section of policy is admirably and clearly
stated by the policy itself. The intent is that an administrator
who wishes to make a commonly-made change to the behaviour of an
init script will be able to edit the file in /etc/default rather
than the script itself. The point of this is that when the package
maintainer improves the script (which happens often), the
administrator only needs to do a trivial merge of the /etc/default
file rather than to deal with a conffile prompt due to the changes
to the script itself.
6. I agree with the policy as stated, and find the wording clear.
There is little room for improvement. I wholeheartedly adopt the
principles and rationale described in the policy text, as a good
basis for the rest of my reasoning.
7. The present situation does not match that described in the policy.
The setting in question, whether to run the daemon, is not recorded
in the init.d script but rather in a different configuration file.
There is no need to edit the init.d script to enable or disable the
daemon. So the reasoning described in the policy does not apply
directly.
8. But we should consider whether an analogous argument can be made.
The reasoning in the policy text could apply to other configuration
files which contain a good deal of complex text supplied by the
package maintainer, and where certain changes might want to be made
by many administrators. In those circumstances it would be useful
to move those commonly-modified configuration options into a
separate file for the same reasons as one wishes to movoe
commonly-modified settings out of init.d scripts.
9. If that were the case then a file in /etc/default might be a good
choice, depending on implementation language and other details.
(For example, in my opinion files in /etc/default ought to be shell
scripts as described in 9.3.2, and if for implementation reasons
the new small configuration file wasn't a shell script then it
ought not to be in /etc/default; also, not all such shell script
configuration fragments ought to be in /etc/default as the package
may well have a better place to put them.)
10. However, this is not the case here - the REMAIL configuration
option which controls daemon startup is indeed in a configuration
file along with other configuration variables, but many of those
configuration variables also need to be modified by an
administrator who wishes to change REMAIL. So there would be
no benefit in moving the REMAIL option into a separate file.
11. Daemon startup can in any case be controlled by adjustment of the
/etc/rc*.d links. These links which are provided specificially for
the purpose of allowing the system administrator control over the
operation of subsystems like this one. The submitter requests the
following arrangement:
/etc/default/* Daemon boot control setup
/etc/<daemon>/<configs> Daemon run time configuration
I disagree. Daemon startup should not be controlled by variables
in /etc/default. Furthermore, I think the distinction being made
here is artificial and serves no useful purpose.
12. Additionally, having the init.d script read the package's
config files to discover whether the system configuration indicates
that the daemon needs to be started, is a good and appropriate
technique. I commend this approach to package maintainers.
13. I therefore conclude that the policy and the package are both
correct. Unfortunately the submitter appears to have misunderstood
both the actual policy text, and the reasoning behind it.
Ian.
Reply to: