Comment 9 for bug 1372673

Revision history for this message
Ben Miller (benjamin-miller115) wrote : Re: [Bug 1372673] Re: excessive debconf use when triggered

What is this shit? Who is this?
On Sep 26, 2014 5:36 AM, "Colin Watson" <email address hidden> wrote:

> 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 <email address hidden> 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 subscribed to a
> duplicate bug report (1201179).
> 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
>