what do I need to do with "man: can't set the locale; make sure $LC_* and $LANG are correct"
Solution 1
Your locale isn't set. In Debian-Base
you should use dpkg-reconfigure locales
to set it.
Some of packages
depend on locales package
and its variable
such as LC_* series
...!
It means $LANG
is empty.
Solution 2
Your locale settings as indicated by environment variables uses locale names that are not available on your system.
Locale settings control the character set used by commands and terminals (LC_CTYPE
), the collation order (LC_COLLATE
), the format of dates (LC_TIME
), numbers (LC_NUMERIC
) and amounts of currency (LC_MONETARY
), the language of messages (LC_MESSAGES
), etc. The values of these variables are locale names. On most systems, the name has the form xx_YY
or xx_YY@variant
or xx_YY.charset
where xx
is a two-letter language code and YY
is a two-letter country code.
Run the command locale
to see your current settings.
Run locale -a
to see the available locale names.
If the locale you'd like to use is missing, you may need to generate it. This is distribution-dependent. For example, on Debian, run dpkg-reconfigure locales
as root. On Ubuntu, run locale-gen xx_YY
to generate the locale xx_YY
.
Solution 3
Below is an addition to the recommendation to use dpkg-reconfigure locales
, which failed for me (my hunch is that if it were working, I wouldn't have this problem.
The problem
me@pc:~$ man
man: can't set the locale; make sure $LC_* and $LANG are correct
What manual page do you want?
First try to solve it, fails
me@pc:~$ sudo dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
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
Generating locales...
en_AG.UTF-8... up-to-date
...(lines omitted)...
Second try, succeeds. I still get an error on en_ZW, but I don't use it.
me@pc:~$ sudo locale-gen en_US en_US.UTF-8 && sudo dpkg-reconfigure locales
...
me@pc:~$ man
what manual page do you want?
No more LOCALE errors on the man command!
Solution 4
This means your system does not know in which language the info should be displayed.
Paste the output of locale -a probably you haven`t generated the locales this is a bit distro specific but usually running locale-gen will generate the locales for you hence removing the error. Take a look on this link.
Solution 5
Still a problem in 2020... On my system (Kubuntu 20.04.1), the solution was simply export LC_ALL=en_US.UTF-8
in my ~/.zshrc
. I imagine the same would work in .bashrc
.
I think there are other variables which need to be set (probably those reported by locales
), but they seem to have all been handled by the desktop environment.
Related videos on Youtube
Tommy
Something for nothing. Bite me if you can score 9+ in a CPS Test.
Updated on September 18, 2022Comments
-
Tommy over 1 year
I typed
man sudoers
but gotman: can't set the locale; make sure $LC_* and $LANG are correct No manual entry for sudoers
What does this mean?
-
Ilya I over 8 yearsI had similar problem on OS X and was able to fix it by commenting out
SendEnv LANG LC_*
in/etc/ssh/ssh_config
.
-
-
AnfJunior over 3 yearsOn my system
$LANG
wasn't empty when I got the message fromman
. I randpkg-reconfigure locales
and let it process, but nothing changed.