[Partially solved] Re: Locale errors
On Sun, 12 Apr 2009 21:14:50 -0500
"Boyd Stephen Smith Jr." <bss@iguanasuicide.net> wrote:
> In <[🔎] 20090412201956.993b4446.celejar@gmail.com>, Celejar wrote:
> >~# man cp
> >man: can't set the locale; make sure $LC_* and $LANG are correct
> >
> >Or, while running aptitude:
> >
> >perl: warning: Setting locale failed.
> >perl: warning: Please check that your locale settings:
> > LANGUAGE = (unset),
> > LC_ALL = (unset),
> > LANG = ""en_US.UTF-8""
> > are supported and installed on your system.
> >perl: warning: Falling back to the standard locale ("C").
> >/usr/bin/mandb: can't set the locale; make sure $LC_* and $LANG are
> > correct
> >
> >I've tried 'dpkg-reconfigure locales'
>
> I've seen it before, and the dpkg-reconfigure usually addresses it.
>
> >, and even purging and
> >reinstalling locales, to no effect.
>
> That usually doesn't help if the dpkg-reconfigure doesn't.
>
> >Is anyone else seeing
> >this? Is this a bug, or some misconfiguration on my system? Note that
> >my regular user account works fine.
>
> I usually run local-gen manually then log out and log back in and things
> work.
Doesn't help.
> Actually, looking at your error message in more detail, it looks like your
> LANG variable is set improperly. For some reason your LANG variable is set
> to '"en_US.UTF-8"'--including the double-quotes. It should be set to
> 'en_US.UTF-8'. Double check your root shell startup files and see if
> something could be wrong there.
And here we have the problem! I noticed that when I log in as root
directly, either to a getty or via 'su', then I don't see the problem.
It only appears in root shells obtained with 'sudo -i'. 'locale' in
the latter case gives:
~# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or
directory locale: Cannot set LC_ALL to default locale: No such file or
directory LANG="en_US.UTF-8"
LC_CTYPE=""en_US.UTF-8""
LC_NUMERIC=""en_US.UTF-8""
LC_TIME=""en_US.UTF-8""
LC_COLLATE=""en_US.UTF-8""
LC_MONETARY=""en_US.UTF-8""
LC_MESSAGES=""en_US.UTF-8""
LC_PAPER=""en_US.UTF-8""
LC_NAME=""en_US.UTF-8""
LC_ADDRESS=""en_US.UTF-8""
LC_TELEPHONE=""en_US.UTF-8""
LC_MEASUREMENT=""en_US.UTF-8""
LC_IDENTIFICATION=""en_US.UTF-8""
LC_ALL=
While 'locale' in the former case gives:
# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
So you seem to be correct; for some reason, in the sudo shell, the LC*
variables are getting extra quotes. Any idea why? [There's nothing
that looks interesting in root's '.bashrc'; it's basically empty.]
Celejar
--
mailmin.sourceforge.net - remote access via secure (OpenPGP) email
ssuds.sourceforge.net - A Simple Sudoku Solver and Generator
Reply to: