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
signature.asc
Description: Digital signature