[Debconf-devel] Bug#849118: question owner set inconsistently for multiarch packages; breaks purge

dann frazier dannf at debian.org
Thu Dec 22 18:41:35 UTC 2016


Package: debconf
Version: 1.5.59
Severity: normal

The "owner" field for a "Multi-Arch: same" package differs depending on which
maintainer script sets it.

As an example, say we have foo_1-1_amd64.deb that is "Multi-Arch: same", with
a template "foo/bar". When set by config, "foo/bar" will owned by "foo".
However, when set by postinst, "foo/bar" will be owned by "foo:amd64". If
set by both, the question will be owned by both "foo" and "foo:amd64".

One issue with this is that postrm will generally call db_purge during
purge. db_purge will only purge questions owned by "foo:amd64" - any questions
owned by "foo" (i.e., those set by config) will remain.

An example of a package that is impacted by this in the archive is libhesiod0.
I'll illustrate the issue below using this package.

## At start there are no questions owned by libhesiod0 or libhesiod0:amd64:
dannf at xps13:~$ sudo debconf-show libhesiod0
dannf at xps13:~$ sudo debconf-show libhesiod0:amd64
## Install it..
dannf at xps13:~$ sudo apt install libhesiod0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  libhesiod0
0 upgraded, 1 newly installed, 0 to remove and 17 not upgraded.
Need to get 26.5 kB of archives.
After this operation, 98.3 kB of additional disk space will be used.
Get:1 http://mirror.keystealth.org/debian sid/main amd64 libhesiod0 amd64 3.2.1-3 [26.5 kB]
Fetched 26.5 kB in 0s (28.8 kB/s)     
## Here debconf questions are set by config, and will be owned by libhesiod0
Preconfiguring packages ...
Selecting previously unselected package libhesiod0:amd64.
(Reading database ... 292594 files and directories currently installed.)
Preparing to unpack .../libhesiod0_3.2.1-3_amd64.deb ...
Unpacking libhesiod0:amd64 (3.2.1-3) ...
## Here debconf questions are set by postinst, owned by libhesiod0:amd64
Setting up libhesiod0:amd64 (3.2.1-3) ...
Processing triggers for man-db (2.7.6.1-2) ...
## Notice that these questions are owned by both libhesiod0 & libhesid0:amd64
dannf at xps13:~$ sudo debconf-show libhesiod0
  hesiod/classes: IN,HS
  hesiod/lhs: .ns
  hesiod/rhs: .buildd
dannf at xps13:~$ sudo debconf-show libhesiod0:amd64
  hesiod/lhs: .ns
  hesiod/rhs: .buildd
  hesiod/classes: IN,HS
## Now purge the package (postrm calls db_purge)
dannf at xps13:~$ sudo apt remove --purge libhesiod0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  libhesiod0*
0 upgraded, 0 newly installed, 1 to remove and 17 not upgraded.
After this operation, 98.3 kB disk space will be freed.
Do you want to continue? [Y/n] 
(Reading database ... 292603 files and directories currently installed.)
Removing libhesiod0:amd64 (3.2.1-3) ...
Processing triggers for man-db (2.7.6.1-2) ...
(Reading database ... 292594 files and directories currently installed.)
Purging configuration files for libhesiod0:amd64 (3.2.1-3) ...
## Purge dropped libhesiod0:amd64's ownership of its questions:
dannf at xps13:~$ sudo debconf-show libhesiod0:amd64
dannf at xps13:~$
## ...but libhesiod0 retains ownership, and the questions persist after purge
dannf at xps13:~$ sudo debconf-show libhesiod0
  hesiod/rhs: .buildd
  hesiod/classes: IN,HS
  hesiod/lhs: .ns

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

Kernel: Linux 4.9.0-rc7-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages debconf depends on:
ii  perl-base  5.24.1~rc4-1

Versions of packages debconf recommends:
ii  apt-utils     1.4~beta2
ii  debconf-i18n  1.5.59

Versions of packages debconf suggests:
ii  debconf-doc                1.5.59
pn  debconf-utils              <none>
ii  libgtk2-perl               2:1.2499-1
pn  libnet-ldap-perl           <none>
pn  libqtcore4-perl            <none>
pn  libqtgui4-perl             <none>
pn  libterm-readline-gnu-perl  <none>
ii  perl                       5.24.1~rc4-1
ii  whiptail                   0.52.19-1

-- debconf information:
  debconf/frontend: Dialog
  debconf-apt-progress/preparing:
  debconf-apt-progress/title:
  debconf-apt-progress/info:
  debconf-apt-progress/media-change:
  debconf/priority: high



More information about the Debconf-devel mailing list