hi - i've been having some issues w/locales on a xenial system, installed from a jessie nfsroot with fai 5.1. my initial problem was that i'd not been including the 'language-pack-en' but it still doesn't seem to be working as expected.
i'd logged https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1598326 but at one point it appeared that might be a red herring. the locales excerpts from debconf.data ([2]) are: locales locales/default_environment_locale select None locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8 it's unclear to me why the run of `/var/lib/dpkg/info/locales.config reconfigure 2.23-0ubuntu3` behaves as it does. beyond the above "Substitution failed" error, while looking at the debug output i noticed other confusing bits. e.g., after finding $target/etc/locale.gen empty, the locales.config script (via GEN_LOCALES and SELECTED_LOCALES variables) appears to *un*set locales/locales_to_be_generated: + SELECTED_LOCALES= + db_set locales/locales_to_be_generated + _db_cmd SET locales/locales_to_be_generated + _db_internal_IFS= + IFS= + printf %s\n SET locales/locales_to_be_generated + IFS= + IFS= read -r _db_internal_line debconf (developer): <-- SET locales/locales_to_be_generated debconf (developer): --> 0 value set + RET=value set + return 0 similarly, it seems that the script tries to substitute the DEFAULT_LOCALES that it finds (from on-disk files) into locales/default_environment_locale (cf. the debconf error above) without regard to its existing value. while investigating i did also find this unexpected bit during fai's debconf task (full logs[1]): read -r _db_internal_line debconf (developer): <-- SUBST locales/default_environment_locale locales en_US.UTF-8 debconf (developer): --> 100 Substitution failed + RET=100 Substitution failed + return 100 but i'm guessing some of my confusion there may have to do with: DEBCONF_DB_OVERRIDE="File{$tmpdb readonly:true}" and its interaction with `dpkg-reconfigure` because despite all the above, the resultant system ends up with the desired debconf settings: locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8 locales locales/default_environment_locale select None *however*, the on-disk /etc/locale.gen only has commented lines and while /etc/default/locale is empty when i set "None", it is also empty when i set locales/default_environment_locale to en_US.UTF-8 via fai's debconf. then there's a bit that leads me back to that bug. on the live system, attempting to noninteractively reconfigure locales again *un*sets locales/locales_to_be_generated (full output [3]): ~# debconf-show locales * locales/locales_to_be_generated: en_US.UTF-8 UTF-8 * locales/default_environment_locale: en_US.UTF-8 ~# egrep -v ^\# /etc/locale.gen [intentionally blank lines] ~# cat /etc/default/locale # File generated by update-locale ~# DEBIAN_FRONTEND=noninteractive /usr/sbin/dpkg-reconfigure locales Generating locales (this might take a while)... en_AG.UTF-8... done en_AU.UTF-8... done en_BW.UTF-8... done en_CA.UTF-8... done en_DK.UTF-8... done en_GB.UTF-8... done en_HK.UTF-8... done en_IE.UTF-8... done en_IN.UTF-8... done en_NG.UTF-8... done en_NZ.UTF-8... done en_PH.UTF-8... done en_SG.UTF-8... done en_US.UTF-8... done en_ZA.UTF-8... done en_ZM.UTF-8... done en_ZW.UTF-8... done Generation complete. ~# debconf-show locales * locales/locales_to_be_generated: * locales/default_environment_locale: en_US.UTF-8 ~# egrep -v ^\# /etc/locale.gen ~# cat /etc/default/locale # File generated by update-locale LANG=en_US.UTF-8 so at this point i believe i'm back to it being a bug of some sort in locales's dpkg wrappings. notably, when `/usr/sbin/dpkg-reconfigure locales` is run *interactively* in place of the noninteractive call, "en_US.UTF-8 UTF-8" is *not* preselected; selecting it and completing the reconfigure results in what i would expect (full output [4]): ~# debconf-show locales * locales/locales_to_be_generated: en_US.UTF-8 UTF-8 * locales/default_environment_locale: en_US.UTF-8 ~# egrep -v ^\# /etc/locale.gen ~# cat /etc/default/locale # File generated by update-locale ~# /usr/sbin/dpkg-reconfigure locales Generating locales (this might take a while)... en_AG.UTF-8... done en_AU.UTF-8... done en_BW.UTF-8... done en_CA.UTF-8... done en_DK.UTF-8... done en_GB.UTF-8... done en_HK.UTF-8... done en_IE.UTF-8... done en_IN.UTF-8... done en_NG.UTF-8... done en_NZ.UTF-8... done en_PH.UTF-8... done en_SG.UTF-8... done en_US.UTF-8... done en_ZA.UTF-8... done en_ZM.UTF-8... done en_ZW.UTF-8... done Generation complete. ~# debconf-show locales * locales/default_environment_locale: en_US.UTF-8 * locales/locales_to_be_generated: en_US.UTF-8 UTF-8 ~# egrep -v ^\# /etc/locale.gen en_US.UTF-8 UTF-8 ~# cat /etc/default/locale # File generated by update-locale LANG=en_US.UTF-8 if anyone has feedback/advice/thoughts, please lmk. otherwise i think i'll be adding this to that bug report. tia! andy 1 https://www.us.archive.org/~abezella/tmp/fai-debconf+debug.log 2 https://catalogd.archive.org/~abezella/tmp/debconf.data.txt 3 https://catalogd.archive.org/~abezella/tmp/noninteractive-dpkg-reconfigure+debug.log 4 https://catalogd.archive.org/~abezella/tmp/interactive-dpkg-reconfigure+debug.log -- andrew bezella <[email protected]> Internet Archive
