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

Bug#80347: [PROPOSED] allow/document use of Debian Configuration management system (debconf)



Package: debian-policy
Severity: wishlist

Rationale:

2.5% of debian packages[1] use debconf to prompt the user at install
time, and this number is growing daily. The benefits of using debconf are
briefly explained at http://kitenet.net/doc/debconf-doc/introduction.html;
they include preconfiguration, (mostly) noninteractive installation, 
elimination of redundant prompting, consistency of user interface, etc.

I feel that with this increasing number of packages using debconf, plus
the existance of a nascent second implementation of the Debian
configuration management system (cdebconf), and the stabalization of the
protocol these things use, the time has finally come to reflect the use of
these things in policy.

Policy should document existing practice; existing practice is to use
debconf or manually ask questions, with the latter perhaps eventually
being phased out. So this proposal does not mandate the use of debconf,
it merely mentions and condones it.

This proposal also moves the spec defining the Debian configuration
management system into policy, as a supporting document like the menu
policy or mime policy. Or rather, it moves _most_ of it in.
Unfortunatly, part of the full spec[2] -- the whole database backend --
is proving difficult to implement, and no implementation exists. I don't
think dragging that into policy makes sense, before it is coded and in
use. So when the proposal talks about the "Debian Configuration management
specification", it is referring to an abridged version of that document.
I attach such an abridged version in docbook XML format, to this message
(as a tarball; there are several xml files and a text and html versions and
other cruft. The Makefile and other similar cruft is not considered part of
this proposal ;-).

Proposal:

--- tmp/policy.text	Fri Dec 22 14:05:33 2000
+++ policy.text	Fri Dec 22 14:05:24 2000
@@ -618,12 +618,47 @@
      This means, amongst other things, using the `--quiet' option on
      `install-info'.
 
+     Errors which occur during the execution of an installation script
+     should be checked and the installation should not continue after an
+     error.
+
+     Note, that Section 4.4, `Scripts', in general applies to package
+     maintainer scripts, too.
+
+     You should not use `dpkg-divert' on a file belonging to another
+     package without consulting the maintainer of that package first.
+
+     All packages which supply an instance of a common command name (or, in
+     general, filename) should generally use `update-alternatives', so that
+     they may be installed together.  If `update-alternatives' is not used,
+     then each package must use `Conflicts' to ensure that other packages
+     are de-installed.  (In this case, it may be appropriate to specify a
+     conflict against earlier versions of something that previously did not
+     use `update-alternatives' -- this is an exception to the usual rule
+     that this not allowed).
+
+2.3.9. Prompting in maintainer scripts
+--------------------------------------
+
+     Package maintainer scripts may prompt the user if necessary. Prompting
+     may be accomplished by hand, or by communicating with a program, 
+     such as debconf, which conforms to the Debian Configuration management 
+     specification, version 2 or higher. (As defined in the file
+     <some filename> in the debian-policy package.)
+
+     Packages which use the Debian Configuration management
+     specification may contain an additional `config' script and a 
+     `templates' file in their control archive. The `config' script may
+     be run before the preinst, and before the package is unpacked or any of
+     its dependancies or pre-dependancies are satisfied, so it must work
+     using only the tools present in the base system.
+
      Packages should try to minimize the amount of prompting they need to
      do, and they should ensure that the user will only ever be asked each
      question once.  This means that packages should try to use appropriate
      shared configuration files (such as `/etc/papersize' and
-     `/etc/news/server'), rather than each prompting for their own list of
-     required pieces of information.
+     `/etc/news/server'), and shared debconf variables rather than each
+     prompting for their own list of required pieces of information.
 
      It also means that an upgrade should not ask the same questions again,
      unless the user has used `dpkg --purge' to remove the package's
@@ -634,38 +669,19 @@
      If a package has a vitally important piece of information to pass to
      the user (such as "don't run me as I am, you must edit the following
      configuration files first or you risk your system emitting
-     badly-formatted messages"), it should display this in the `postinst'
-     script and prompt the user to hit return to acknowledge the message.
-     Copyright messages do not count as vitally important (they belong in
+     badly-formatted messages"), it should display this in the `config' or
+     `postinst' script and prompt the user to hit return to acknowledge the
+     message. Copyright messages do not count as vitally important (they belong in
      `/usr/share/doc/<package>/copyright'); neither do instructions on how
      to use a program (these should be in on line documentation, where all
      the users can see them).
 
      Any necessary prompting should almost always be confined to the
-     post-installation script, and should be protected with a conditional
+     `config' script or the `postinst' script. If it is done in the
+     `postinst' it should be protected with a conditional
      so that unnecessary prompting doesn't happen if a package's
      installation fails and the `postinst' is called with `abort-upgrade',
      `abort-remove' or `abort-deconfigure'.
-
-     Errors which occur during the execution of an installation script
-     should be checked and the installation should not continue after an
-     error.
-
-     Note, that Section 4.4, `Scripts', in general applies to package
-     maintainer scripts, too.
-
-     You should not use `dpkg-divert' on a file belonging to another
-     package without consulting the maintainer of that package first.
-
-     All packages which supply an instance of a common command name (or, in
-     general, filename) should generally use `update-alternatives', so that
-     they may be installed together.  If `update-alternatives' is not used,
-     then each package must use `Conflicts' to ensure that other packages
-     are de-installed.  (In this case, it may be appropriate to specify a
-     conflict against earlier versions of something that previously did not
-     use `update-alternatives' -- this is an exception to the usual rule
-     that this not allowed).
-

-- 
see shy jo

[1] http://kitenet.net/programs/debconf/stats/
[2] http://kitenet.net/doc/debconf-doc/specification.html

Attachment: spec.tar.gz
Description: Binary data


Reply to: