debconf is, to put it simply, "Install Shield Wizards Done Right," and is one of the main advantages of ?DebianVsOtherDistros. There is no debconf executable program. The name 'debconf' simply refers to the package configuration system as a whole.
More specifically, when installing (or upgrading) any single package or a group of packages, debconf asks the packages' configuration questions all at once, and stores the user/admin preferences in a database. Later as the packages are installing, their scripts use the configuration preferences in the database to generate configuration files and otherwise do adimnistrative tasks (e.g. set up servers to start or not start, install other software such as libdvdcss, etc.). This saves the hassle of editing configuration files by hand, and also of waiting for each individual package to install before responding to certain configuration questions.
The User/administrator can configure the following aspects of debconf behavior by running dpkg-reconfigure debconf:
- Ask again: debconf by default does not re-ask old configuration questions during upgrade of a package, instead it uses old answers to generate new versions of configuration files, providing seamless upgrade capability. But this behavior can be changed so such questions are always asked (with old answers provided as defaults).
- Front-end: debconf can ask its questions using interfaces from plain text to Dialog (default) to GNOME control applet.
- Priority: all questions are assigned priority levels, either low, medium, high or critical, and the user/admin can decide below what priority level (s)he would like debconf to use the default configuration answer without asking (default medium).
In the same way, you can configure debconf-enabled packages by typing dpkg-reconfigure packagename and answering configuration questions.
Future Plans
In the future debconf is pictured to be an even more flexible and easy to use and maintain configuration management system by using the formidable config4gnu ConfigurationHandling functionality. Additionaly config4gnu should also provide access to the debconf database as a debconf frontend and in this way allow all config4gnu frontends to save a update/grade safe state on debian systems. http://config4gnu.sourceforge.net
Unfortunately config4gnu is not yet ready for use in Debian. But when it becomes mature, its planned features of extending configuration management flexibility beyond that of debconf and harmonizing configuration management with other distributions should make it well worth adoption in Debian. In the meantime, debconf remains a stable production-ready uniform front-end for configuring nearly 800 Debian packages.