Provided by: debconf-doc_1.5.86ubuntu1_all bug

NAME

       debconf - Debian package configuration system

DESCRIPTION

       Debconf  is  a  configuration  system  for Debian packages. There is a rarely-used command named debconf,
       documented in debconf(1)

       Debconf provides a consistent interface for configuring packages, allowing you  to  choose  from  several
       user  interface  frontends.  It  supports preconfiguring packages before they are installed, which allows
       large installs and upgrades to ask you for all the necessary information up front, and  then  go  do  the
       work  while  you do something else. It lets you, if you're in a hurry, skip over less important questions
       and information while installing a package (and revisit it later).

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 proceed while you are away getting a cup of coffee.

       If you use apt (version 0.5 or above), and you have apt-utils installed, each package apt  installs  will
       be automatically preconfigured. This is controlled via /etc/apt/apt.conf.d/70debconf

       Sometimes  you  might want to preconfigure a package by hand, when you're not installing it with apt. You
       can use dpkg-preconfigure(8) to do that, just  pass  it  the  filenames  of  the  packages  you  want  to
       preconfigure. You will need apt-utils installed for that to work.

Reconfiguring packages

       Suppose  you installed the package, and answered debconf's questions, but now that you've used it awhile,
       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 seems
       to remember you have answered the questions, and doesn't ask them again (this is a feature).

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

       This will ask all the questions you saw when debconf was first installed.  It may ask you other questions
       as well, since it asks even low priority questions that may  have  been  skipped  when  the  package  was
       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. There are many debconf frontends available:

       dialog The default frontend, this uses the whiptail(1) or dialog(1) programs to display questions to you.
              It works in text mode.

       readline
              The  most  traditional  frontend,  this looks quite similar to how Debian configuration always has
              been: a series of questions, printed out at the console using plain text, and prompts  done  using
              the  readline  library.  It even supports tab completion. The libterm-readline-gnu-perl package is
              strongly recommended if you chose to use this frontend;  the  default  readline  module  does  not
              support  prompting  with  default  values.   At  the minimum, you'll need the perl-modules package
              installed to use this frontend.

              This frontend has some special hotkeys. Pageup (or ctrl-u) will go back to the  previous  question
              (if  that  is  supported by the package that is using debconf), and pagedown (or ctrl-v) will skip
              forward to the next question.

              This is the best frontend for remote admin work over a slow  connection,  or  for  those  who  are
              comfortable with unix.

       noninteractive
              This  is  the  anti-frontend. It never interacts with you at all, and makes the default answers be
              used for all questions. It might mail error messages to root,  but  that's  it;  otherwise  it  is
              completely  silent  and  unobtrusive,  a perfect frontend for automatic installs. If you are using
              this front-end, and require non-default answers to questions, you will need to preseed the debconf
              database; see the section below on Unattended Package Installation for more details.

       gnome  This  is  a modern X GUI using the gtk and gnome libraries. Of course, it requires a valid DISPLAY
              to work; debconf will fall back to other frontends if it  can't  work.  Note  that  this  frontend
              requires you have the libgtk3-perl package installed.

       kde    This  frontend  provides a modern X GUI based on the KDE Platform. You of course need a DISPLAY to
              use this frontend and you must install debconf-kde-helper package. The frontend will fall back  to
              dialog if some of the prerequisites are not met.

       editor This  is  for  those fanatics who have to do everything in a text editor. It runs your editor on a
              file that looks something like a typical unix config file, and you edit the  file  to  communicate
              with debconf. Debconf's author prefers to not comment regarding the circumstances that led to this
              frontend being written.

       web
              This frontend acts as a web server, that you connect to with  your  web  browser,  to  browse  the
              questions  and  answer  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.

              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. So this is more of a proof of concept than anything.

       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 DEBIAN_FRONTEND  environment  variable  to  the
       name of the frontend to use. For example:
         DEBIAN_FRONTEND=readline apt-get install slrn

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

       Note that not all frontends will work in all circumstances. If a frontend fails  to  start  up  for  some
       reason, debconf will print out a message explaining why, and fall back to the next-most similar frontend.

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. In increasing order of importance:

       low    Very trivial questions that have defaults that will work in the vast majority of cases.

       medium Normal questions that have reasonable defaults.

       high   Questions that don't have a reasonable default.

       critical
              Questions that you really, really need to see (or else).

       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(8) and dpkg-preconfigure(8) commands, or by setting the DEBIAN_PRIORITY
       environment variable.

Backend Database

       Debconf  uses a rather flexible and potentially complicated backend database for storing data such as the
       answers to questions. The file /etc/debconf.conf is used to configure this database. If you need  to  set
       up something complicated, like make debconf read a remote database to get defaults, with local overrides,
       read the debconf.conf(5) man page for all the gory details. Generally, the backend database is located in
       /var/cache/debconf/
        .

Unattended Package Installation

       If  you  have  many  machines  to  manage  you will sometimes find yourself in the position of needing to
       perform an unattended installation or upgrade of packages on many systems, when the  default  answers  to
       some  configuration  questions  are  not  acceptable.  There  are many ways to approach this; all involve
       setting up a database and making debconf use it to get the answers you want.

       You should really read debconf.conf(5) before this section, as  you  need  to  understand  how  debconf's
       databases work.

       The  easiest  way  to  set  up  the  database  is to install the packages on one machine and answer their
       questions as usual. Or you might just use dpkg-preconfigure(8) to configure a  set  of  packages  without
       actually  installing  them.  Or  you  might even decide to write a plain text debconf database by hand or
       something.

       Once you have the database, you need to figure out how to make the remote systems use it. This depends of
       course on the configuration of those systems and what database types they are set up to use.

       If you are using the LDAP debconf database, an entire network of debian machines can also have any or all
       package installation questions answered automatically by a single LDAP server.

       But perhaps you're using something a little bit easier to set up like, say, the default debconf  database
       configuration, or you just don't want your remote systems to use LDAP all the time. In this case the best
       approach is to temporarily configure the remote systems to  stack  your  database  underneath  their  own
       existing  databases,  so  they  pull  default values out of it. Debconf offers two environment variables,
       DEBCONF_DB_FALLBACK and DEBCONF_DB_OVERRIDE, to make it easy to do this on the fly. Here is a sample use:

          cat /var/cache/debconf/config.dat | \
          ssh root@target "DEBIAN_FRONTEND=noninteractive \
                         DEBCONF_DB_FALLBACK=Pipe apt-get upgrade"

       This makes the debconf on the remote host read in the data that is piped across the  ssh  connection  and
       interpret  it  as a plain text format debconf database. It then uses that database as a fallback database
       -- a read-only database that is queried for answers to questions if the system's  main  debconf  database
       lacks answers.

       Here's another way to use the DEBCONF_DB_FALLBACK environment variable:

         ssh -R 389:ldap:389 root@target \
            "DEBCONF_DB_FALLBACK='LDAP{host:localhost}' apt-get upgrade"

       Here  ssh  is used to set up a tunneled LDAP connection and run debconf.  Debconf is told to use the LDAP
       server as the fallback database. Note the use of "{host:localhost}" to configure how debconf accesses the
       LDAP database by providing the "host" field with a value of "localhost".

       Here's another method:

         scp config.dat root@target:
         ssh root@target "DEBCONF_DB_FALLBACK='File{/root/config.dat}' apt-get upgrade

       Here  you  copy  the  database  over with scp, and then ssh over and make debconf use the file you copied
       over. This illustrates a shorthand you can use in the DEBCONF_DB_FALLBACK parameters -- if a  field  name
       is left off, it defaults to "filename".

       There  is  only  one  problem  with  these  uses of the DEBCONF_DB_FALLBACK parameter: While the fallback
       database can provide answers to questions the other debconf databases have never seen, it is only queried
       as  a  fallback; after the other databases. If you need to instead temporarily override an existing value
       on the remote host, you should instead use the DEBCONF_DB_OVERRIDE variable. Like DEBCONF_DB_FALLBACK, it
       sets  up  a  temporary  database,  but  this  database is consulted before any others, and can be used to
       override existing values.

Developing for Debconf

       Package developers and others who want to develop packages that use debconf should read debconf-devel(7)
        .

       Briefly, debconf communicates with maintainer scripts or other programs via standard  input  and  output,
       using  a  simple line-oriented command language similar to that used by common internet protocols such as
       SMTP. Programs use this protocol to ask debconf to display questions to the user, and retrieve the user's
       answers.  The questions themselves are defined in a separate file, called the "templates file", which has
       a format not unlike a debian control file.

       Debian packages which use debconf typically provide both a templates file and a "config" script  (run  to
       preconfigure the package) in the control metadata section of the package.

ENVIRONMENT

       DEBIAN_FRONTEND
              Used to temporarily change the frontend debconf uses. See above.

       DEBIAN_PRIORITY
              Used to temporarily change the minimum priority of question debconf will display. See above.

       DEBCONF_DEBUG
              Turns on debugging output on standard error. May be set to a facility name or a regular expression
              which matches a facility name (such as '.*' to output all debug info). The facility names include:

              user   Debugging info of interest to a debconf user.

              developer
                     Debugging info of interest to a package developer.

              db     Debugging info about the backend database.

       DEBCONF_NOWARNINGS
              Set to "yes" to disable some warnings that debconf may display. Does not suppress display of fatal
              errors.

       DEBCONF_TERSE
              Set  to "yes" to enable terse mode, in which debconf frontends cut down on the verbiage as much as
              possible.

       DEBCONF_DB_FALLBACK
              Stack a database after the normally used databases, so that it  is  used  as  a  fallback  to  get
              configuration  information  from. See "Unattended Package Installation" above. If the value of the
              variable is the name of an existing database in debconf.conf, then that  database  will  be  used.
              Otherwise, the environment variable can be used to configure a database on the fly, by telling the
              type of database, and optionally passing field:value settings, inside curly braces after the type.
              Spaces are used to separate fields, so you cannot specify a field value containing whitespace.

       Thus, this uses the fallbackdb in debconf.conf:
         DEBCONF_DB_FALLBACK=fallbackdb

       While this sets up a new database of type File, and tells it a filename to use and turns off backups:
         DEBCONF_DB_FALLBACK=File{Filename:/root/config.dat Backup:no}

       And as a shorthand, this sets up a database of type File with a filename:
         DEBCONF_DB_FALLBACK=File{/root/config.dat}

       Note that if a fallback database is set up on the fly, it will be read-only by default.

       DEBCONF_DB_OVERRIDE
              Stack a database before the normally used databases, so that it can override values from them. The
              value of the variable works the same as does the value of DEBCONF_DB_FALLBACK.

       DEBCONF_DB_REPLACE
              Use a given database instead of the normally used databases.  This may be useful for testing  with
              a  separate  database  without  having  to create a separate debconf.conf, or to avoid locking the
              normal databases.

       DEBCONF_SYSTEMRC
              If this environment variable is set, debconf will ignore a user's ~/.debconfrc file, and  use  the
              system  one  instead.   If  it is set to the name of a regular file, debconf will use that file in
              preference to the system configuration files.

       DEBCONF_FORCE_DIALOG
              If this environment variable is set, debconf will use dialog in preference  to  whiptail  for  the
              dialog frontend.

       DEBCONF_FORCE_XDIALOG
              If  this  environment  variable is set, debconf will use Xdialog in preference to whiptail for the
              dialog frontend.

       DEBCONF_NONINTERACTIVE_SEEN
              Set to "true" to cause the seen flag to be set for questions asked in the noninteractive frontend.

BUGS

       Probably quite a few, there's a lot of code here.

       If you do file a bug report, be sure to include the following information:

       *      The debconf frontend you were using when the problem occurred

       *      What you did to trigger the problem.

       *      The full text of any error messages. If you can reproduce the bug, do so  with  DEBCONF_DEBUG='.*'
              set and exported. This speeds up debugging a lot.

SEE ALSO

       debconf.conf(5), debconf-devel(7), dpkg-preconfigure(8), dpkg-reconfigure(8), debconf(1),

AUTHOR

       Joey Hess <joeyh@debian.org>

                                                                                                      DEBCONF(7)