Fix Error - Locale: Cannot Set LC_ALL to default locale: No such file or directory

In this article let's discuss how to fix the error “locale: Cannot Set LC_ALL to default locale: No such file or directory” in Linux.

Locales are used in Linux to define which language the user uses. As the locales define the character sets being used as well, setting up the correct locale is especially important if the language contains non-ASCII characters.

To list all available locales, use:

$ locale –a
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=

On a Debian server, you can fix it using the following.

1. Export “LC_ALL” parameter

Make sure to export variable to LC_ALL parameter

$ export LC_ALL="en_US.UTF-8"

2. Enable locales

Let's enable locales on the server

$ sudo locale-gen "en_US.UTF-8"
$ sudo dpkg-reconfigure locales

or

Trying editing /etc/defaults/locale file and set LANG parameter as below

LANG=en_US.UTF-8

3. Package glibc-locale

Make sure you have installed  glibc-locale package on the system.

The above 3 options should fix locale error on Ubuntu and Debian.

Note: As per Debian wiki - "Using LC_ALL is strongly discouraged as it overrides everything use it only when testing and never set it in a startup file".

4 Comments... add one

  1. Ok, but I want to have a time format of sv_SE.UTF-8 ... and when LC_ALL is set to en_US.UTF-8, it resets the LC_TIME variable. is there a way to not get the error message yet still have that time format?

    Reply
  2. hi, I have a problem with locales and SSH:

    I followed your steps but, I can't find the glibc-locale package...

    # apt-cache search glibc-locale
    #

    Any ideas? Thank's

    Reply
    • Marc,

      Glibc fork knows as libc6 should be the package.
      apt-cache policy libc6 - To check the installed and candidate version
      ldd --version - check the current version

      But it's unlikely the problem

      The ssh client likely forwards locate settings.

      In ssh_config - try comment out the line 'SendEnv LANG LC_*' or the server sshd_config line 'AcceptEnv LANG LC_*'

      Reply

Leave a Comment