Bug#349503: locales doesn't leave dpkg knowing it owns /etc/environment
During a major upgrade, I got skads of errors like <quote>
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_NO:en_US:en_GB:en",
LC_ALL = (unset),
LANG = "en_US"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
</quote> and eventually tracked the problem to /etc/environment
I commented out its contents but some later package activity
over-wrote it, with the bogus values complained about above; and dpkg
-S /etc/environment said "not found", making it a bit tricky to work
out which of the many recently changed packages was responsible.
Presumably the bogus settings reported above were due to the prior
content of /etc/environment (hence my shell's environment when I was
running the update), supplied by the colleague who originally set up
my new machine for me (minimally, and on sarge: I was updating to etch
and installing what I need for my work). So I can understand how the
installed set of locales might be out of sync with the environment for
the rest of the update: however, whatever was re-generating the file
was storing in it the bogus values from my shell's environment, rather
than values consistent with the configuration changes it'd made that
made that environment bogus.
Educated guess-work prompted me to dpkg-reconfigure locales (after
first deleting /etc/config and logging out and back in, to purge its
cruft from my environment) and discover that it created the file.
However, the re-generated file just sets LANG=en_GB.UTF-8, which is in
accord with the settings I actually specified. Experimentally, I
re-tried the reconfigure with LANGUAGE=bogus set in my environment and
it made no difference. So perhaps the bogus version of this file is
getting written by something else than locales: perhaps other packages
also frob this file, I can't know.
There is no comment in the file saying "see /usr/share/doc/"wherever
to tell me what package is responsible for writing what entries to
this file; and my experiments suggest that locales isn't actually the
culprit; nor do I find anything in /usr/share/doc/locales that helps
me to work out what should be in this file or what might be messing it
So, in brief:
* something is writing bogus data to this file, incompatible with the
locales actually supported,
* there is no way (aside from guess-work) for the victim of such
gibberish to discover anything about the file other than that it's
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.12-1-686-smp
Locale: LANG=en_GB, LC_CTYPE=en_GB (charmap=ISO-8859-1)
Versions of packages locales depends on:
ii debconf [debconf-2.0] 1.4.67 Debian configuration management sy
ii libc6 [glibc-2.3.5-3] 2.3.5-8 GNU C Library: Shared libraries an
locales recommends no packages.
-- debconf information:
* locales/default_environment_locale: en_GB.UTF-8
* locales/locales_to_be_generated: en_GB ISO-8859-1, en_GB.UTF-8 UTF-8, en_US ISO-8859-1, nb_NO ISO-8859-1, nb_NO.UTF-8 UTF-8, nn_NO ISO-8859-1, nn_NO.UTF-8 UTF-8