Subject: /etc/sysconf ? /etc/<somethingelse> ?

From: Ian Jackson <[email-masked]>
Date: Mon, 3 Jun 96 14:56 BST

Many packages are finding themselves in need of a directory to place
one or two small files which are read by initialisation scripts.

For example, /etc/papersize could be here (though perhaps we don't
want to move it now), as could files telling the rc.boot scripts which
keyboard map to load.  The timezone package could put its record of
which timezone has been copied to /etc here.

It's clear to me that we need this directory; it's less clear to me
what it is called.

Please discuss the matter here, and then in a week or two we'll take a
decision.  If no consensus has been reached I'll punt the decision to
Bruce for a pronouncement-by-fiat :-).  Let's not have another
filename parsing wrangle here.

Ian.

---

From: Dominik Kubla <[email-masked]>
Date: Mon, 03 Jun 1996 18:10:32 +0200

>>>>> Ian Jackson writes:
[...]
> Please discuss the matter here, and then in a week or two we'll take
> a decision.  If no consensus has been reached I'll punt the decision
> to Bruce for a pronouncement-by-fiat :-).  Let's not have another

I think we should align Debian along the SVID (System V Interface
Definition), the XPG (X/Open Portability Guide) and the SingleUnix
Specification (aka Spec1170) which basically means that all
configuration data are stored in /etc/default/ (Irix uses
/etc/config.d, HP-UX 10 uses /etc/rc.config.d, but both of them are
not SVR4 in the strict sense of the term).

IMHO it was a poor move of the FSSTND group (where i participated at
that time) to abandon /etc/default/ and other SysV specifics because
the majority did not want to alienate the BSD-philics.  Poor move,
because they would run *BSD sooner or later anyway.

Lets play the System V card; whic we did already with our choice of
sysvinit, ncurses (terminfo!) and the binary format (also adopting an
iBCS2-compatible ELF would have been more sensible).

Comments?
  Dominik

---

From: Richard Kettlewell <[email-masked]>
Date: Mon, 3 Jun 96 17:00:29 +0100 (BST)

>It's clear to me that we need this directory; it's less clear to me

SVR4 has a directory called /etc/default which contains default
settings for a large number of applications.  The files are all in
key=value format.  If someone decides to implement this under Linux
then it could prove inconvenient if we've gone and used /etc/default
for our own purposes.

How about /etc/config?  I'm against /etc/sysconf on aesthetic grounds
only, I can see no technical reason why it would be problematic.

- Richard

-- 
http://www.elmail.co.uk/staff/richard/
GCS d- s+:- a-- C++ ULVS+++$ P+++ L++ E++ W(++,--) N(++,+) o? K w---
O? M- V? PS(+,+++) PE Y+ PGP+ t- 5++ X+@ R tv--- b++>++++ DI+ D+ G e++
h r% y++

---

From: Lars Wirzenius <[email-masked]>
Date: Mon, 03 Jun 1996 22:29:31 +0300

> It's clear to me that we need this directory; it's less clear to me

I more or less agree about the need.  I don't much care what the name is.
It might be a good idea to include "debian" in it, so that it doesn't
conflict with other systems.  (Some day someone might want to make .deb's
that work with Red Hat, for example.)

We might want to develop some tools for making it easy to read and write
the files in /etc/sysconf.  Most of the files are likely to be simple, but
there's still a need to allow for commenting, line splitting, etc.

Oh, and we probably don't want to move all configuration stuff into
/etc/sysconf.  For example, sendmail's configuration file(s?) should stay
as they are.  But it would be nice for things like the following, I think:

	preferred paper size for this system

	should shell packages add the shell to /etc/shells?
	
	preferred local language for this system (so that not every
	words-package will ask if it should be made the primary one)
	
Essentially, /etc/sysconf should contain stuff that is shared between
packages, cannot easily be deduced from other stuff using standard 
conventions, and should probably often be policy decisions of some kind.

On the other hand, I couldn't think of any other examples than the above
(in addition to the timezone name suggested by Ian).

(I don't think we want a Registry.  No, we already have a Registry.  We
just call it /etc. :)

---

From: Lukas Nellen <[email-masked]>
Date: Mon, 03 Jun 1996 16:27:07 -0500

>>>>> "IJ" == Ian Jackson <[email-masked]> writes:

IJ> Many packages are finding themselves in need of a directory to place
IJ> one or two small files which are read by initialisation scripts.

IJ> For example, /etc/papersize could be here (though perhaps we don't
IJ> want to move it now), as could files telling the rc.boot scripts which
IJ> keyboard map to load.  The timezone package could put its record of
IJ> which timezone has been copied to /etc here.

What exactly is supposed to go into that directory? I see a point for
cross-package system defaults like /etc/papersize. But under which
circumstances would a package be allowed to put private information
into this directory? After all, each package contains the default
configuration files. And things which cannot be defaulted in a
reasonable way get setup interactively. These configuration files
should be the record of what was the previous version of the
package. 

Using the timezone package as an example, I can obtain the
configuration information either by reading the link /etc/localtime or
by looking at /etc/timezone. Why should there be another file with the
same information? How do you keep an sysadmin from changing the files
/etc/timezone and /etc/localtime without updating the new default
file?

If the configuration files are scripts - like those in /etc/init.d - I
see the point to separate the selection of defaults from the actual
code. And a comment in the script can tell the user how to change the
defaults. 

In any case: would there be some documentation of legitimate use and
contents of the default configuration files? E.g., can I put letter,
Letter, US letter, A4, DINA4, DIN a4, ... in /etc/papersize and have
them recognized by all packages which read /etc/papersize? What I want
to say is that shared configuration files only help if their use is
defined somewhere - basically like the list of virtual packages or in
an appendix to the developer guidelines.

IJ> It's clear to me that we need this directory; it's less clear to me
IJ> what it is called.

I have no strong feelings about the name of the directory
though. Previous art, like the SYSV choice, might serve as a guide,
though. 

			Cheers,
				Lukas
-------------------------------------------------------------------------------
   Dr. Lukas Nellen                 | Email: [email-masked]
   Depto. de Fisica Teorica, IFUNAM |
   Apdo. Postal 20-364              | Tel.:  +52 5 622 5014 ext. 218
   01000 Mexico D.F., MEXICO        | Fax:   +52 5 622 5015

---

From: [email-masked] (Kai Henningsen)
Date: 03 Jun 1996 23:51:00 +0200

> one or two small files which are read by initialisation scripts.

One version I've seen is /etc/defaults, on SysV systems. The usual  
contents are files with shell-style variable assignments, named after the  
packages that use these files - /etc/defaults/tar might, for example,  
specify default options for tar.

Of course, we're currently looking not for a general defaults mechanism,  
but for one specific to booting; however, I believe a general mechanism  
might well be the right answer here.

As to file naming, both package name and binary name are reasonable  
policies, I think.

(As an aside, we _could_ move /etc/papersize there _if_ we leave a  
compatibility symlink around as long as not all packages need the new  
scheme.)

(Another aside: two of our customers have SysV4 systems, but I can't  
currently reach either, so I can't look at the original and verify the  
spelling or, for example, list the files in that directory.)

MfG Kai

---

From: Ian Jackson <[email-masked]>
Date: Tue, 4 Jun 96 14:21 BST

Lukas Nellen writes [ SuperCite undone - iwj ]:
> > Ian Jackson <[email-masked]> writes:
...
> 
> What exactly is supposed to go into that directory?

This is a very good question :-).

The existence of the directory is being driven by two related
problems.  One is that many of the /etc/init.d and other scripts in
/etc have much configuration coded into them; this means that to
modify (say) the list of filesystems excluded from the daily cron jobs
you have to modify the script and take the prompting from dpkg each
time.  The key characteristic of these config files is that they're
configuration for scripts which are themselves in /etc.

The other is that many packages' postinst scripts want somewhere to
store overall configuration parameters so that they can share them.
/etc/papersize is an example of this.  They key characteristic of
these config files is that updating them may not affect packages until
they are purged and reinstalled, because they are only read by
packages' scripts.  Of course it's better if they can be read at run
time by the programs being invoked, but this can sometimes be hard
(for example, when different programs have different config file
formats, and the package postinst scripts copy the data between them).

Perhaps we should have two directories
  /etc/scriptconf
  /etc/installconf
?

Ian.

---

From: Manoj Srivastava <[email-masked]>
Date: 04 Jun 1996 01:48:13 -0400

Hi,

	I'm confused.  Is /etc not the directory where the system
configuration is kept, and thus the place for programs to look into
for startup files? or is /etc the place where the user may logically
find and modify conf-files, and the new directory being proposed be
the place for startup files not necesarily modified by the user?
(Lord, I can't even phrase the question cogently).

	manoj

--
"My father was an amazing man.  The older I got, the smarter he got."
-- Mark Twain %%
Manoj Srivastava               Systems Research Programmer, Project Pilgrim,
Phone: (413) 545-3918                A143B Lederle Graduate Research Center,
Fax:   (413) 545-1249         University of Massachusetts, Amherst, MA 01003
<[email-masked]> <URL:http://www.pilgrim.umass.edu/%7Esrivasta/>