Package: txt2pdbdoc
Version: 1.4.2-3
Severity: normal
Followup-For: Bug #248368
Ben, your analysis is partly correct, but the error is not that
db_get does not exist (it does), but what db_get returns (10) and
that this is not handled properly. /usr/share/debconf/confmodule
actaully synthesises a bunch of do_* functions programattically
(read the cryptic loop closely), including do_get. All that these
functions appear to go is to echo to stdout the command in upper
case, followed by its arguments. This is presumably interpreted
by the debconf host program that is talking to the postinst. In
this case, setting the first line of the postinst to
#!/bin/sh -x
yields the following:
+ . /usr/share/debconf/confmodule
++ '[' '!' '' ']'
++ exec /usr/share/debconf/frontend
/var/lib/dpkg/info/txt2pdbdoc.postinst configure 1.4.2-2
+ . /usr/share/debconf/confmodule
++ '[' '!' 1 ']'
++ '[' -z '' ']'
++ exec
++ DEBCONF_REDIR=1
++ export DEBCONF_REDIR
++ _old_opts=configure 1.4.2-2
...
++ set -- get GET
++ eval 'db_get () {
echo "GET $@" >&3
# Set to newline to get whole line.
local IFS='\''
'\''
local _LINE
read -r _LINE
# Disgusting, but it'\''s the only good way to split
the line,
# preserving all other whitespace.
RET="${_LINE#[! ][ ]}"
return ${_LINE%%[ ]*}
}'
...
++ set -- configure 1.4.2-2
++ unset _old_opts
+ db_get txt2pdbdoc/warning-memcard
+ echo 'GET txt2pdbdoc/warning-memcard'
+ local 'IFS=
'
+ local _LINE
+ read -r _LINE
+ RET=10 txt2pdbdoc/warning-memcard doesn't exist
+ return 10
Note in particular the synthesis of db_get in confmodule and its
subsequent invocation in txt2pdbdoc.postinst.
Maintainer: I don't know debconf well enough to interpret what's
happening here, but my wild guess is that the postinst script is
supposed to deal sensibly with the "return 10", rather than just
let it fall through to the invocation environment. Even if the
"return 10" is the result of some other problem that is not
supposed to be occurring, presumably it is the responsibility of
the postinst to report the error message to the user?
- Raz
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.0-1-686
Locale: LANG=C, LC_CTYPE=C
Versions of packages txt2pdbdoc depends on:
ii debconf 1.4.25 Debian configuration management sy
ii libc6 2.3.2.ds1-12 GNU C Library: Shared libraries an
ii perl5.8.4-1 Larry Wall's Practical Extraction
-- debconf information:
* txt2pdbdoc/warning-memorycard: