[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#279590: base-config: http/proxy fails to preseed

Analysis of this bug:

- mirror/http/proxy is preseeded, and does not exist in the cdebconf
  database at preseed time, so debconf-set-selections registers it to
  the debian-installer/dummy template
- base-config copies mirror/http/proxy to the debconf db using
  debconf-copydb, which copies template ownership info without sanity
  checks. Note that several other values are also so copied, of these
  mirror/suite seems to be the only one likely to also be affected by
  this problem, since the others always exist in the cdebconf db and so
  won't be assigned a dummy template in d-i.
- result is that the debconf db has a question with a template that does
  not exist
- debconf-seed does also preseed mirror/http/proxy, but since it already
  has a template, even though it's a nonexistant template, it does not
  replace the template with a new, existing template. This is apparently
  because debconf instantiates a blank template.
- apt-setup asks the mirror/http/proxy question.
- This causes debconf to create an input element using
  debian-installer/dummy. Since the template does not really exist, it
  ends up creating a noninteractive input element.
- The element is asked to show itself, but does nothing (note that in
  unstable's version of debconf, Kamion's changes happened to make it
  set its value to the value of its question. This happens to avoid what
  comes next..)
- Debconf assumes that the element's value is now set to the answer to
  the question. Unfortunatly, that value is actually undef. It then
  sets the question's answer to the value. Now mirror/http/proxy is set
  to "" and no proxying is done.

So quite a few buggy things here, and places where a bit more sanity
checking would prevent the problem. There's really another related
problem which is that once a debconf question gets its template set to
debian-installer/dummy, it will never be displayed to the user again,
even if its seen flag is unset or the package is reconfgiured. That is
acceptable for d-i, but not for the installed system, really. Due to the
way preseeding works, it does seem that this currently can only happen
for mirror/http/proxy and mirror/suite.

The easiest way to fix this is to either move Kamion's
DEBCONF_NONINTERACTIVE_SEEN patch into sarge, or to add a
debian-installer/dummy template to base-config. Neither of these will
fix the whole problem.

Perhaps a better fix is to make base-config check for
debian-installer/dummy or other templates that do not exist and if one
is the template of one of the values it's copying from the cdebconf db,
take appropriate measures. Or, just copy things, and then after the fact
re-REGISTER the template of each of the questions to what it ought to be
in the installed system.

Hmm, another way to look at this is that we could stop using the db
copying hack, and rely on the regular preseeding mechanism. So d-i would
add to the preseed file items for anything it wanted to preseed into the
installed debian system, including mirror/suite, mirror/http/proxy,
debconf/priority, etc, and let base-config use those preseeded values as
it would any others. This would need some mode to d-i, and base-config
would need to do the preseeding earlier (it couldn't be a menu item
since we'd want to preseed debconf/priority). I think this is overall
the cleanest approach, but it seems like a post-sarge approach.

I'll probably go with the idea of re-REGISTERING all the templates that
are debconf-copydb'd, as the best available quick fix.

see shy jo

Attachment: signature.asc
Description: Digital signature

Reply to: