[Bug 1372673] Re: excessive debconf use when triggered
Colin Watson
cjwatson at canonical.com
Fri Sep 26 09:26:34 UTC 2014
Fixed in utopic now:
man-db (2.7.0-1) unstable; urgency=medium
* New upstream release:
- Add systemd tmpfiles snippet to clean up old cat files after a week.
- Run "col -b -p -x" over cat pages if possible before parsing them
(closes: #751934).
- Move database mtime out of the database into file metadata, making the
database reproducible between installations (closes: #760895).
- Use high-precision timestamps.
- Order files by first physical extent before reading (closes: #574410).
- Prioritise COLUMNS above TIOCGWINSZ (LP: #1315282).
- Formatting improvements to man(1) (closes: #726266).
- Don't use pointed-to name as title for database-located pages (closes:
#709405).
- Move zsoelim to /usr/lib/man-db/.
* Remove unnecessary entries from debian/dirs.
* Cache the value of man-db/auto-update in the file system, so that we
don't have to talk to debconf when processing triggers (closes:
#579075).
* Add MIME handlers (thanks, Kevin Ryde; closes: #725157).
* Override the long-standing Lintian warning for non-standard-dir-perm on
/var/cache/man.
* Adjust cron.daily to skip cat file cleanup if running under systemd,
since the upstream-provided tmpfiles snippet now handles that.
* Rebuild the database on upgrade to this version, since the format has
changed.
-- Colin Watson <cjwatson at debian.org> Mon, 22 Sep 2014 19:43:40 +0100
** Changed in: man-db (Ubuntu)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to man-db in Ubuntu.
https://bugs.launchpad.net/bugs/1372673
Title:
excessive debconf use when triggered
Status in “man-db” package in Ubuntu:
Fix Released
Status in “man-db” source package in Lucid:
Fix Committed
Status in “man-db” source package in Precise:
Fix Committed
Status in “man-db” source package in Trusty:
Fix Committed
Status in “man-db” package in Debian:
Fix Released
Bug description:
SRU justification:
[Impact]
We see rather frequent hard-to-debug upgrade failures that amount to
man-db's trigger failing in some way that has nothing to do with the
mandb program itself, but rather in some kind of communication with
the package management frontend. Almost all the open bugs on Ubuntu
man-db come down to this in one way or another. The root cause is, I
believe, that it is not really safe to use debconf from a dpkg
trigger: while debconf itself behaves as if it were Essential, the
debconf protocol is often mediated by various frontends with less
stringent practices. It would certainly be a good idea to get man-
db's trigger out of the loop here, as dpkg tends to run it at the end
of an unpack phase when large numbers of packages are unconfigured,
which is pretty much the worst case for having this work properly.
In the past I've tried to investigate why debconf fails in these
situations. I've come to believe this is a wild goose chase, and that
the common case of ordinary postinsts sourcing the debconf confmodule
is much less likely to be a problem due to the nature of
unpack/configure sequencing; I admit that I don't have proof of this,
but having one fewer script using debconf is surely not going to make
things worse, and since lots of unpack runs pull the man-db trigger it
seems likely to improve things substantially.
The man-db trigger reads a single value from debconf to tell it
whether to automatically update the manual page database (used by
apropos and whatis). This is in an agreed location in debconf so that
such things as package builders can save time by suppressing the
database update. There is, however, no reason to read this value
every time the trigger is activated; we can just cache it under
/var/lib/man-db/ when man-db is configured and then do a much simpler
file-level test in the trigger. I should have thought of this years
ago.
To have the maximum benefit for upgraders, we should do what we can to
ensure that they have a fixed version of man-db installed before the
upgrade. I'd therefore like to apply this fix to all currently-
supported releases.
[Test Case]
I don't have a reliable reproduction scenario, but I have two
suggestions, which are in the sort of general vein of unit testing and
integration testing respectively:
* Install the new version of man-db and check that it causes /var/lib/man-db/auto-update to exist if and only if the debconf value for man-db/auto-update is true, and in turn that this still causes the database to be updated or not updated respectively when installing a package containing a manual page.
* After installing the new version of man-db, upgrade to the next supported or development series using the upgrade tool of your choice.
[Regression Potential]
Installing packages that contain manual pages and running system
upgrades should exercise this pretty thoroughly. Since in general
this weakens the constraints on achieving successful upgrades, the
main thing to watch out for would just be things like inverted logic
that might cause the database not to be updated when it should be or
vice versa.
Original report follows, imported from Debian bug
http://bugs.debian.org/579075:
Package: man-db
Version: 2.5.7-2
Severity: wishlist
I noticed that man-db starts debconf when triggered. Given how
often triggers run, I think that should be optimised. Ie, move
the $1 = triggered test above the confmodule sourcing.
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'stable')
Architecture: i386 (i686)
Kernel: Linux 2.6.32-3-686 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages man-db depends on:
ii bsdmainutils 8.0.10 collection of more utilities from
ii debconf [debconf-2.0] 1.5.32 Debian configuration management sy
ii dpkg 1.15.7.1 Debian package management system
ii groff-base 1.20.1-9 GNU troff text-formatting system (
ii libc6 2.10.2-6 Embedded GNU C Library: Shared lib
ii libgdbm3 1.8.3-9 GNU dbm database routines (runtime
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime
man-db recommends no packages.
Versions of packages man-db suggests:
ii 5.0.386.0~svn20100423r45407-0u Chromium browser
ii 2.30.2-1 Intuitive GNOME web browser
pn <none> (no description available)
ii 3.5.9-2 Web browser based on Firefox
ii 436-1 pager program similar to more
ii 0.5.2-4 WWW browsable pager with excellent
-- debconf information excluded
--
see shy jo
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/man-db/+bug/1372673/+subscriptions
More information about the foundations-bugs
mailing list