How do I fix my locale issue?
I am getting this message every time I do something like starting or stopping a service.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings: LANGUAGE = "en_US:en", LC_ALL = (unset), LC_MESSAGES = "en_US.UTF-8", LANG = "en_US.UTF-8" 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
(Reading database ... 21173 files and directories currently installed.)
Removing bind9 ... * Stopping domain name service... bind9 [ OK ]
Processing triggers for man-db ...
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 How do I fix this error ?
420 Answers
First run locale to list what locales currently defined for the current user account:
$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=Then generate the missing locale and reconfigure locales to take notice:
$ sudo locale-gen "en_US.UTF-8"
Generating locales... en_US.UTF-8... done
Generation complete.
$ sudo dpkg-reconfigure locales
Generating locales... en_US.UTF-8... up-to-date
Generation complete.Now you will not see any errors anymore!
16Nothing suggested above worked in my case (Ubuntu Server 12.04LTS). What finally helped
was putting to the file /etc/environment:
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8For some reason it was missing. The outputs for locale and other commands appeared like the variables were properly defined. In other words don't take for granted all the basic stuff is declared where it should be declared.
16They should disappear after issuing:
sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales dpkg-reconfigure reconfigures packages after they have already been installed. Pass it the names of a package or packages to reconfigure. It will ask configuration questions, much like when the package was first installed.
Just add the following to your .bashrc file (assuming you're using bash)
export LC_ALL="en_US.UTF-8" 8 This is a common problem if you are connecting remotely, so the solution is to not forward your locale. Edit /etc/ssh/ssh_config and comment out SendEnv LANG LC_* line.
There is a command for that:
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8It updates /etc/default/locale with provided values.
To apply the changes, you can
source /etc/default/locale 5 What worked for me on 12.10 was this:
apt-get install language-pack-en-base This was after dpkg-reconfigure locales produced no results.
Don't forget exit your SSH session (or your X11) by exiting and logging back in again. All of these suggestions didn't work for me unless I logged back in....
1For Ubuntu 12.10 none of the above worked except for ratzs' solution. I recommend adding this to your /etc/bash.bashrc file:
export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8" 1 I was stuck in a weird state where my local machine is set to es and so the remote machine (via vagrant) had been provisioned in an un-handled state. Therefore, I had to use the manual export= only to facilitate a successful dpkg-reconfigure. Then the system is fine.
export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales 1 I wrote a bash script to fix above issue.The above answers are useful but setting the locale variables by simply exporting the values in shell variable will work only for a session. I permanently solved this issue by exporting the locale variables in .bash_profile file. You can also use /etc/profile file instead of .bash_profile.
echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profileDon't forget to source the .bash_profile and follow the script in easy setup.
You can try:
export LANGUAGE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_NUMERIC=ru_RU.UTF-8
export LC_TIME=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_MONETARY=ru_RU.UTF-8
export LC_MESSAGES=ru_RU.UTF-8
export LC_PAPER=ru_RU.UTF-8
export LC_NAME=ru_RU.UTF-8
export LC_ADDRESS=ru_RU.UTF-8
export LC_TELEPHONE=ru_RU.UTF-8
export LC_MEASUREMENT=ru_RU.UTF-8
export LC_IDENTIFICATION=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8where ru_RU is your country code.
Current accepted answer is not sufficient in the troubleshoot strategy because you can have an human error.
You setup your system to en_US but you have en_GB enabled in/etc/locale.gen like I had in the thread here for Raspberry Pi 3b.
You should have all your used locales enabled in /etc/locale.gen.
I had en_GB.UTF-8 UTF-8 only enabled in /etc/locale.gen. I should have there only enabled en_US.UTF-8 UTF-8 because of other commands run for it. So I commented GB and uncommented US, and everything work now
masi@raspberrypi:~ $ sudo vim /etc/locale.gen
masi@raspberrypi:~ $ sudo locale-gen
Generating locales (this might take a while)... en_US.UTF-8... done
Generation complete.
masi@raspberrypi:~ $ sudo a2enmod rewrite && a2enmod headers && a2enmod ssl
Module rewrite already enabled
Module headers already enabled
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabledNow, I do not get those locale mistakes with any commands.
System: Raspbian Jessie
Hardware: Raspberry Pi 3b
As said here in the Debian Wiki, you can edit /etc/locale.gen and add all locales (or uncomment them, I had a list of all locales but all except the one I used as comments) you wish to have support for on your system. Then, execute
sudo dpkg-reconfigure localesto update the locales on your system. Now, all of the locales you added/uncommented in /etc/locale.gen are available on your system without any warnings.
If you use KDE environment, check the setlocale.sh file in ~/.kde/env/:
$ cat ~/.kde/env/setlocale.sh
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en 2 This worked for me when I had the same problem (based on the solution provided by dman):
sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment" 2 You may need to run
sudo dpkg-reconfigurealso for the application you have installed while "locale" settings have been invalid / not matching.While system locale was incorrectly setup I installed
vim. Later when system locale was fixed I saw a situation thatvimwas showing utf-8 characters incorrectly as strange symbols whilenanoandlesswere showing them correctly. Runningsudo dpkg-reconfigure vimappeared to fix the issue after the system settings were fixed.
I also noticed the same thing as already mentioned: You may need to disconnect/reconnect SSH to make changes visible.
Adding the following text to ~/.profile works for me:
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8I am using Ubuntu 16.04 LTS 64-bit server on Linode.
Source of the problem
I experienced this, logging in from one machine to another via ssh. The remote machine didn’t have the locale files, that I had on my local machine. You can either disable the forwarding of the locale from your local machine to the remote machine (in the file /etc/ssh/sshd_config remove the line AcceptEnv LANG LC_CTYPE …) or install the locale (changing it is not necessary in this case).
Installing
On Fedora, RHEL, Redhat, CentOS I used
sudo dnf install langpacks-defor the german (de) language packs. Logged out and in and it worked.
Search for other langpacks with
dnf search langpacks-Changing/Activating
To list available locales I used
localectl list-localesAnd to set a new one
sudo localectl set-locale de_DE.utf8 4 remove locales using localepurge you don't need and reboot
apt install localepurge More in general
"Zoraya ter Beek, age 29, just died by assisted suicide in the Netherlands. She was physically healthy, but psychologically depressed. It's an abomination that an entire society would actively facilitate, even encourage, someone ending their own life because they had no hope. Th…"