Man Linux: Main Page and Category List

NAME

       debconf.conf - debconf configuration file

DESCRIPTION

       Debconf    is    a    configuration   system   for   Debian   packages.
       /etc/debconf.conf and ~/.debconfrc are configuration files debconf uses
       to  determine  which  databases it should use. These databases are used
       for storing two types of information;  dynamic  config  data  the  user
       enters  into  it,  and static template data. Debconf offers a flexible,
       extensible database backend. New drivers can be created with a  minimum
       of effort, and sets of drivers can be combined in various ways.

SYNOPSIS

         # This is a sample config file that is
         # sufficient to use debconf.
         Config: configdb
         Templates: templatedb

         Name: configdb
         Driver: File
         Filename: /var/cache/debconf/config.dat

         Name: templatedb
         Driver: File
         Mode: 644
         Filename: /var/cache/debconf/templates.dat

FILE FORMAT

       The  format  of  this file is a series of stanzas, each separated by at
       least one wholly  blank  line.  Comment  lines  beginning  with  a  "#"
       character are ignored.

       The  first  stanza of the file is special, is used to configure debconf
       as a whole. Two fields are required to be in this first stanza:

              Config Specifies the name of the database  from  which  to  load
                     config data.

              Templates
                     Specifies  the  name  of  the  database  to  use  for the
                     template cache.

       Additional fields that can be used include:

              Frontend
                     The frontend Debconf should use, overriding any  frontend
                     set in the debconf database.

              Priority
                     The  priority Debconf should use, overriding any priority
                     set in the debconf database.

              Admin-Email
                     The email address Debconf should send mail to if it needs
                     to  make  sure  that  the  admin  has  seen  an important
                     message. Defaults to "root", but can be set to any  valid
                     email  address  to  send the mail there. If you prefer to
                     never  have  debconf  send  you  mail,  specify  a  blank
                     address.  This  can  be  overridden  on  the fly with the
                     DEBCONF_ADMIN_EMAIL environment variable.

              Debug  If set, this  will  cause  debconf  to  output  debugging
                     information to standard error. The value it is set to can
                     be something like "user", "developer", "db", or a regular
                     expression. Typically, rather than setting it permanently
                     in a config file, you will only want to temporarily  turn
                     on  debugging, and the DEBCONF_DEBUG environment variable
                     can be set instead to accomplish that.

              NoWarnings
                     If set, this will make debconf not display warnings about
                     various  things.   This can be overridden on the fly with
                     the DEBCONF_NOWARNINGS environment variable.

              Log    Makes debconf log debugging information as  it  runs,  to
                     the  syslog.  The  value  it  is  set to controls that is
                     logged. See Debug, above for an explanation of the values
                     that can be set to control what is logged.

              Terse  If  set  to  "true",  makes  some debconf frontends use a
                     special terse display mode  that  outputs  as  little  as
                     possible.   Defaults   to   false.   Terse  mode  may  be
                     temporarily  set  via   the   DEBCONF_TERSE   environment
                     variable.

       For example, the first stanza of a file might look like this:
         Config: configdb
         Templates: templatedb

       Each remaining stanza in the file sets up a database. A database stanza
       begins by naming the database:
         Name: configdb

       Then it  indicates  what  database  driver  should  be  used  for  this
       database.   See  DRIVERS, below, for information about what drivers are
       available.
         Driver: File

       You can indicate that the database  is  not  essential  to  the  proper
       functioning  of  debconf  by  saying it is not required. This will make
       debconf muddle on if the database fails for some reason.
         Required: false

       You can mark any database  as  readonly  and  debconf  will  not  write
       anything to it.
         Readonly: true

       You  can  also  limit  what types of data can go into the database with
       Accept- and Reject- lines; see ACCESS CONTROLS, below.

       The remainder of each database stanza is used to provide  configuration
       specific  to  that driver. For example, the Text driver needs to know a
       directory to put the database in, so you might say:
         Filename: /var/cache/debconf/config.dat

DRIVERS

       A number of drivers are available, and more can be written with  little
       difficulty.  Drivers  come  in  two general types. First there are real
       drivers -- drivers that actually access and store data in some kind  of
       database,  which  might  be  on  the  local  filesystem, or on a remote
       system. Then there are meta-drivers that combine other drivers together
       to form more interesting systems. Let’s start with the former.

       File
              This  database  driver  allows  debconf  to store a whole
              database in a single flat text file. This makes  it  easy
              to  archive,  transfer  between machines, and edit. It is
              one of the more compact database formats in terms of disk
              space used. It is also one of the slowest.

              On  the  downside, the entire file has to be read in each
              time debconf starts up, and saving it is also slow.

              The following things are configurable for this driver.

                     Filename
                             The file to use as the database. This is a
                             required field.

                      Mode   The permissions to create the file with if
                             it does not exist. Defaults to 600,  since
                             the  file  could contain passwords in some
                             circumstances.

                      Format The format of the file. See FORMATS below.
                             Defaults to using a rfc-822 like format.

                      Backup Whether a backup should be made of the old
                             file  before  changing  it.   Defaults  to
                             true.

              As  example  stanza  setting  up  a  database  using this
              driver:

                Name: mydb
                Driver: File
                Filename: /var/cache/debconf/mydb.dat

       DirTree
              This database driver allows debconf to store  data  in  a
              hierarchical   directory  structure.  The  names  of  the
              various debconf templates and questions are used as-is to
              form  directories with files in them. This format for the
              database is the easiest to  browse  and  fiddle  with  by
              hand.   It  has  very  good load and save speeds. It also
              typically occupies the most space, since a lot  of  small
              files and subdirectories do take up some additional room.

              The following things are configurable for this driver.

                     Directory
                             The  directory  to  put  the   files   in.
                             Required.

                     Extension
                             An extension to add to the names of files.
                             Must  be  set  to  a   non-empty   string;
                             defaults to ".dat"

                      Format The format of the file. See FORMATS below.
                             Defaults to using a rfc-822 like format.

                      Backup Whether a backup should be made of the old
                             file  before  changing  it.   Defaults  to
                             true.

              As example  stanza  setting  up  a  database  using  this
              driver:

                Name: mydb
                Driver: DirTree
                Directory: /var/cache/debconf/mydb
                Extension: .txt

       PackageDir
              This database driver is a compromise between the File and
              DirTree databases. It uses a directory, in which there is
              (approximately)  one  file per package that uses debconf.
              This is fairly fast, while using little  more  room  than
              the File database driver.

              This  driver  is  configurable in the same ways as is the
              DirTree driver, plus:

              Mode   The permissions to create files with. Defaults  to
                     600,  since  the  files could contain passwords in
                     some circumstances.

              As example  stanza  setting  up  a  database  using  this
              driver:

                Name: mydb
                Driver: PackageDir
                Directory: /var/cache/debconf/mydb

       LDAP
              WARNING:  This database driver is currently experimental.
              Use with caution.

              This  database  driver  accesses  a  LDAP  directory  for
              debconf  configuration  data.Due  to  the  nature  of the
              beast, LDAP directories should typically be  accessed  in
              read-only  mode.   This  is because multiple accesses can
              take  place,  and  it’s   generally   better   for   data
              consistency if nobody tries to modify the data while this
              is happening.  Of course, write access is  supported  for
              those  cases  where you do want to update the config data
              in the directory.

              For information  about  setting  up  a  LDAP  server  for
              debconf,    read   /usr/share/doc/debconf-doc/README.LDAP
              (from the debconf-doc package).

              To use this database driver, you must  have  the  libnet-
              ldap-perl   package   installed.  Debconf  suggests  that
              package, but does not depend on it.

              Please carefully consider the  security  implications  of
              using  a  remote  debconf  database. Unless you trust the
              source, and you trust the intervening network, it is  not
              a very safe thing to do.

              The following things are configurable for this driver.

                      server The  host  name  or  IP address of an LDAP
                             server to connect to.

                      port   The port on which to connect to  the  LDAP
                             server.   If  none  is  given, the default
                             port is used.

                      basedn The DN under which all config  items  will
                             be  stored.   Each  config  item  will  be
                             assumed  to  live  in  a  DN  of  cn=<item
                             name>,<Base DN>.  If this structure is not
                             followed, all bets are off.

                      binddn The  DN  to  bind  to  the  directory  as.
                             Anonymous  bind  will  be  used if none is
                             specified.

                     bindpasswd
                             The password to use  in  an  authenticated
                             bind  (used  with  binddn, above).  If not
                             specified, anonymous bind will be used.

                             This option should  not  be  used  in  the
                             general case.  Anonymous binding should be
                             sufficient most of the time for  read-only
                             access.  Specifying a bind DN and password
                             should be reserved for the occasional case
                             where  you  wish  to  update  the  debconf
                             configuration data.

                     keybykey
                             Enable access to individual LDAP  entries,
                             instead  of  fetching  them all at once in
                             the beginning. This is very useful if  you
                             want   to   monitor  your  LDAP  logs  for
                             specific debconf keys requested.  In  this
                             way,  you could also write custom handling
                             code on the LDAP server part.

                             Note that when this option is enabled, the
                             connection  to  the  LDAP  server  is kept
                             active during the whole Debconf run.  This
                             is  a little different from the all-in-one
                             behavior where two brief  connections  are
                             made to LDAP; in the beginning to retrieve
                             all the entries, and in the  end  to  save
                             eventual changes.

              An  example  stanza  setting  up  a  database  using this
              driver, assuming the remote database  is  on  example.com
              and can be accessed anonymously:

                Name: ldapdb
                Driver: LDAP
                Readonly: true
                Server: example.com
                BaseDN: cn=debconf,dc=example,dc=com
                KeyByKey: 0

              Another  example,  this  time  the  LDAP  database  is on
              localhost, and can be written to:

                Name: ldapdb
                Driver: LDAP
                Server: localhost
                BaseDN: cn=debconf,dc=domain,dc=com
                BindPasswd: secret
                KeyByKey: 1

       Pipe
              This special-purpose database driver reads and writes the
              database from standard input/output. It may be useful for
              people with special needs.

              The following things are configurable for this driver.

                      Format The format to read and write. See  FORMATS
                             below.  Defaults  to  using a rfc-822 like
                             format.

                      Infd   File  descriptor  number  to  read   from.
                             Defaults  to reading from stdin. If set to
                             "none", the database  will  not  read  any
                             data on startup.

                      Outfd  File   descriptor   number  to  write  to.
                             Defaults to writing to stdout. If  set  to
                             "none",  the  database will be thrown away
                             on shutdown.

       That’s all of the real drivers, now moving on to  meta-drivers..

       Stack
              This driver stacks up a number of other databases (of any
              type), and allows  them  to  be  accessed  as  one.  When
              debconf asks for a value, the first database on the stack
              that contains the value returns  it.  If  debconf  writes
              something to the database, the write normally goes to the
              first driver on the stack that has the  item  debconf  is
              modifying,  and  if none do, the new item is added to the
              first writable database on the stack.

              Things become more interesting if one of the databases on
              the  stack is readonly. Consider a stack of the databases
              foo, bar, and baz, where foo and baz are  both  readonly.
              Debconf  wants  to  change an item, and this item is only
              present in baz, which is readonly. The  stack  driver  is
              smart enough to realize that won’t work, and it will copy
              the item from baz to bar, and the write will  take  place
              in  bar.  Now  the item in baz is shadowed by the item in
              bar, and it will not longer be visible to debconf.

              This kind of thing is particularly useful if you want  to
              point many systems at a central, readonly database, while
              still allowing things to be overridden  on  each  system.
              When  access  controls  are  added to the picture, stacks
              allow you to  do  many  other  interesting  things,  like
              redirect  all  passwords to one database while a database
              underneath it handles everything else.

              Only one piece of configuration is needed  to  set  up  a
              stack:

                      Stack  This  is where you specify a list of other
                             databases, by name, to tell it what  makes
                             up the stack.

              For example:

                Name: megadb
                Driver: stack
                Stack: passworddb, configdb, companydb

              WARNING:  The  stack  driver is not very well tested yet.
              Use at your own risk.

       Backup
              This driver passes all requests on  to  another  database
              driver. But it also copies all write requests to a backup
              database driver.

              You must specify the following  fields  to  set  up  this
              driver:

                      Db     The database to read from and write to.

                     Backupdb
                             The name of the database to send copies of
                             writes to.

              For example:

                Name: backup
                Driver: Backup
                Db: mydb
                Backupdb: mybackupdb

       Debug
              This driver passes all requests on  to  another  database
              driver,  outputting  verbose  debugging  output about the
              request and the result.

              You must specify the following  fields  to  set  up  this
              driver:

                      Db     The database to read from and write to.

ACCESS CONTROLS

       When  you  set  up  a  database, you can also use some fields to
       specify access controls. You can specify that  a  database  only
       accepts  passwords,  for example, or make a database only accept
       things with "foo" in their name.

       Readonly
              As was mentioned earlier, this access control, if set  to
              "true",  makes  a  database  readonly.  Debconf will read
              values from it, but will never write anything to it.

       Accept-Name
              The text in  this  field  is  a  perl-compatible  regular
              expression  that is matched against the names of items as
              they are requested from the database. Only  if  an  items
              name  matches  the  regular expression, will the database
              allow debconf to access or modify it.

       Reject-Name
              Like Accept-Name, except  any  item  name  matching  this
              regular expression will be rejected.

       Accept-Type
              Another regular expression, this matches against the type
              of the item that is being  accessed.  Only  if  the  type
              matches the regex will access be granted.

       Reject-Type
              Like  Accept-Type,  except any type matching this regular
              expression will be rejected.

FORMATS

       Some of the database drivers use format modules to  control  the
       actual  format  in  which  the database is stored on disk. These
       formats are currently supported:

       822    This is a file format  loosely  based  upon  the  rfc-822
              format  for  email  message  headers. Similar formats are
              used throughout Debian; in the dpkg status file,  and  so
              on.

EXAMPLE

       Here is a more complicated example of a debconf.conf file.

         # This stanza is used for general debconf setup.
         Config: stack
         Templates: templates
         Log: developer
         Debug: developer

         # This is my own local database.
         Name: mydb
         Driver: DirTree
         Directory: /var/cache/debconf/config

         # This is another database that I use to hold
         # only X server configuration.
         Name: X
         Driver: File
         Filename: /etc/X11/debconf.dat
         Mode: 644
         # It’s sorta hard to work out what questions
         # belong to X; it should be using a deeper
         # tree structure so I could just match on ^X/
         # Oh well.
         Accept-Name: xserver|xfree86|xbase

         # This is our company’s global, read-only
         # (for me!) debconf database.
         Name: company
         Driver: LDAP
         Server: debconf.foo.com
         BaseDN: cn=debconf,dc=foo,dc=com
         BindDN: uid=admin,dc=foo,dc=com
         BindPasswd: secret
         Readonly: true
         # I don’t want any passwords that might be
         # floating around in there.
         Reject-Type: password
         # If this db is not accessible for whatever
         # reason, carry on anyway.
         Required: false

         # I use this database to hold
         # passwords safe and secure.
         Name: passwords
         Driver: File
         Filename: /etc/debconf/passwords
         Mode: 600
         Accept-Type: password

         # Let’s put them all together
         # in a database stack.
         Name: stack
         Driver: Stack
         Stack: passwords, X, mydb, company
         # So, all passwords go to the password database.
         # Most X configuration stuff goes to the X
         # database, and anything else goes to my main
         # database. Values are looked up in each of those
         # in turn, and if none has a particular value, it
         # is looked up in the company-wide LDAP database
         # (unless it’s a password).

         # A database is also used to hold templates. We
         # don’t need to make this as fancy.
         Name: templates
         Driver: File
         Mode: 644
         Format: 822
         Filename: /var/cache/debconf/templates

NOTES

       If  you  use  something  like  ${HOME}  in this file, it will be
       replaced with the value of the named environment variable.

       Environment variables can also be used to override the databases
       on the fly, see debconf(7)

       The field names (the part of the line before the colon) is case-
       insensitive. The values, though, are case sensitive.

PLANNED ENHANCEMENTS

       More drivers and formats. Some ideas include: A SQL driver, with
       the capability to access a remote database.  A DHCP driver, that
       makes available some special things like hostname,  IP  address,
       and  DNS  servers.  A driver that pulls values out of public DNS
       records TXT fields.  A format that is compatible with the output
       of  cdebconf.   An override driver, which can override the value
       field or flags of all requests that pass through it.

FILES

       /etc/debconf.conf

       ~/.debconfrc

SEE ALSO

       debconf(7)

AUTHOR

       Joey Hess <joeyh@debian.org>