The Debconf User's Guide

Joey Hess

The Debian Project

joeyh@debian.org

This text is distributed according to the General Public License.


Table of Contents
Introduction
Preconfiguring packages
Reconfiguring a package
Frontends
Priorities

Introduction

This is a guide to debconf, from the user's perspective. [1] Debconf is the new user interface that is popping up in increasing numbers of packages as you install them with dpkg. It provides a consistent interface to configuring packages, and lets you do some neat things you couldn't before. This guide will show you some of them. But best of all, it ensures that you only see each question once, not over and over each time you install a package, like you might have in the past.


Reporting Bugs

But first, please realize that debconf is still under development. I introduce new bugs from time to time. If debconf is misbehaving, please check the debconf bug list before filing a bug. You might also try the latest version of debconf in Incoming, as I have often seen and fixed the bug before you have. Please try to keep my workload down by not filing duplicate bug reports.

If you do file a bug report, tell me the frontend you were using when the problem occurred, what you did to trigger the problem, and paste any error messages you can into the bug report.


Preconfiguring packages

Debconf can configure packages before they are even installed onto your system. This is useful because it lets all the questions the packages are going to ask be asked at the beginning of an install, so the rest of the install can proceeed while you are away getting a cup of coffee. If you use apt, you have probably already seen this in action. Debconf sets up apt so debconf is run to preconfigure all packages apt installes, just before it installs them.

Sometimes you might want to preconfigure a package by hand, when you're not installing it with apt. You can use the dpkg-preconfigure command to do that, just pass it the filenames of the packages you want to preconfigure.


Reconfiguring a package

One of the first things you will probably want to use debconf for is to reconfigure a package. You installed the package, and answered debconf's questions, but now that you've used it a while, you realize you want to go back and change some of your answers. In the past, reinstalling a package was often the thing to do when you got in this situation, but when you reinstall the package, debconf seem to remember you have answered the questions, and doesn't ask them again.

Luckily, debconf makes it easy to reconfigure any package that uses it. Say you want to reconfigure debconf itself. Just run, as root:

dpkg-reconfigure --priority=medium debconf

This will ask all the questions you saw when debconf was first installed. You can use it on any other package that uses debconf, as well.


Frontends

One of Debconf's unique features is that the interface it presents to you is only one of many, that can be swapped in at will.

Table 1. Debconf frontends

frontenddescription
dialog The default frontend, this uses the whiptail or dialog programs to display questions to you. It works in text mode, though it may be a little slow over slow dialup commections.
text The most traditional frontend, this looks quite similar to how Debian configuration always has: a series of questions, printed out at the console using plain text. It does have readline support.

Note: I reccommend you install the libterm-readline-gnu-perl package to make the most of the readline support.

This is the best frontend for remote admin work over a slow connection, or for people who are comfortable with unix.
web This frontend acts as a web server, that you connect to with your web browser, to browse the questions and anser them. It has a lot of promise, but is a little rough so far. When this frontend starts up, it will print out the location you should point your web browser to. You have to run the web browser on the same machine you are configuring, for security reasons.

Note: Do keep in mind that this is not a very secure frontend. Anyone who has access to the computer being configured can currently access the web server and configure things while this frontend is running.

noninteractive This is the anti-frontend. It never interacts with you at all, and makes the default answers be used for all questions. It will occasionally mail root with messages the package wanted to display, but that's it; otherwise it is completly silent and unobtrusive, a perfect frontend for automatic installs.
gtk This frontend uses the GTK toolkit to interact with you in X, in a pretty GUI. It has a lot of promise, but it too rough right now to be used.

You can change the default frontend debconf uses by reconfiguring debconf. On the other hand, if you just want to change the frontend for a minute, you can set the DEBCONF_FRONTEND environment variable to the name of the frontend to use. For example:

DEBCONF_FRONTEND=text apt-get install slrn

The dpkg-reconfigure and dpkg-preconfigure commands also let you pass --frontend= to them, followed by the frontend you want them to use.


Priorities

Another nice feature of debconf is that the questions it asks you are prioritized. If you don't want to be bothered about every little thing, you can set up debconf to only ask you the most important questions. On the other hand, if you are a control freak, you can make it show you all questions. Each question has a priority, from this list:

Table 2. Supported priorities

PriorityDescription
low Very trivial items that have defaults that will work in the vast majority of cases.
medium Normal items that have reasonable defaults.
high Items that don't have a reasonable default.
critical Items that will probably break the system without user intervention.

Only questions with a priority equal to or greater than the priority you choose will be shown to you. You can set the priority value by reconfiguring debconf, or temporarily by passing --priority= followed by the value to the dpkg-reconfigure and dpkg-preconfigure commands.

Notes

[1]

For a quick introduction to debconf, see the Introduction to Debconf. For more detailed information about using debconf with packages, see the Debconf Tutorial.