[Debconf-devel] Bug#518322: debconf: db_register broken in corner case.

sean finney seanius at debian.org
Thu Mar 5 12:55:36 UTC 2009

Package: debconf
Version: 1.5.25
Severity: normal

Hash: SHA1


i have a corner case scenario where i think db_register gets broken.

to reproduce:

- - install package A the includes some "source" templates
- - install package B that registers the templates via db_register
- - remove (w/out purge) package B
- - remove (--purge) package A
- - install package A and package C, the latter of which uses db_register
  just like package B

at the last step, the templates are still in the database showing up with
owner as package B (should be B *and* A), but db_register does not seem
to find the template on subsequent calls.  purging all three packages
and reinstalling package A and package C gets things working again.

for some non-abstract context, package A == dbconfig-common, which
uses register extensively as part of automatic database configuration for
other packages.  if package B were one webapp, and package C another, the
result is that the automatic database configuration is broken until all
packages (and others) are purged and reinstalled.

i'm going to go out on a limb and say that there's a bug with either:

- - when A is purged, all of A's templates should be purged, including those 
  registered by other packages, (which if they are sane must be in
  rcfiles state or on the way to being removed/purged themselves) should
  be purged.

- - when a package is installed and first imports its templates into debconf,
  some extra support must be added to overwrite/merge with a template that
  has the same name but different owner.

i guess i'd side with the former, since "debconf is a cache" and all that.

in retrospect i'm quite surprised that dbconfig-common handles this as
gracefully as it does:

+ db_register dbconfig-common/database-type cacti/database-type
debconf (developer): <-- REGISTER dbconfig-common/database-type cacti/database-type
debconf (developer): --> 10 No such template, "dbconfig-common/database-type"
+ return 1
+ _dbc_debug 'dbconfig-common not yet setup, deferring configuration.'
+ '[' insane ']'
+ dbc_logline 'dbconfig-common not yet setup, deferring configuration.'
+ printf 'dbconfig-common not yet setup, deferring configuration..\n'
dbconfig-common not yet setup, deferring configuration..

i.e. the package installs but with broken configuration.  because of this
and because it's such an exotic corner case i'm keeping severity at normal :)


- -- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages debconf depends on:
ii  debconf-i18n                  1.5.25     full internationalization support 
ii  perl-base                     5.10.0-19  minimal Perl system

Versions of packages debconf recommends:
ii  apt-utils              APT utility programs

Versions of packages debconf suggests:
ii  debconf-doc                  1.5.25      debconf documentation
ii  debconf-utils                1.5.25      debconf utilities
ii  gnome-utils          GNOME desktop utilities
ii  libgnome2-perl               1.042-1+b1  Perl interface to the GNOME librar
pn  libnet-ldap-perl             <none>      (no description available)
pn  libqt-perl                   <none>      (no description available)
pn  libterm-readline-gnu-perl    <none>      (no description available)
ii  perl                         5.10.0-19   Larry Wall's Practical Extraction 
ii  whiptail                     0.52.2-11.3 Displays user-friendly dialog boxe

- -- debconf information:
* debconf/priority: medium
* debconf/frontend: Dialog

Version: GnuPG v1.4.9 (GNU/Linux)


More information about the Debconf-devel mailing list