Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I am getting this message everytime 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 ?

share|improve this question

11 Answers 11

up vote 120 down vote accepted

First run locale to list what locales you are supposed to have:

$ 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=

The generate the missing locale and reconfigure locales to take notice:

$ sudo locale-gen fi_FI.UTF-8
Generating locales...
  fi_FI.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... done
  fi_FI.UTF-8... up-to-date
Generation complete.

Now you will not see any errors anymore!

share|improve this answer
2  
did not work for me –  Umair Ayub Apr 24 at 7:43

Nothing 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-8

For 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.

share|improve this answer
23  
Yes, none other worked except this one, perhaps due to updated version. But I rather prefer to put this in /etc/default/locale. –  cmnajs Feb 22 '13 at 20:18
2  
Updated /etc/default/locale and no more warnings. Thanks –  ohho Feb 26 '13 at 7:00
1  
Yep, the others didn't work for me. This one did. Here is the one-liner I used for unattended updating of this. sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment" –  dman Mar 22 at 6:01
1  
@user163207 your solution is incorrect because it appends (instead of overwriting), it's not the recommended file, and echo needs to be run with the interpretation of backslash escapes enabled. This is the same as yours but with the aforementioned fixed: sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale" –  glarrain Apr 9 at 21:22
    
I am facing the same issue in my Ubuntu Cloud Image –  Umair Ayub Apr 24 at 16:03

They should disappear after issuing:

sudo locale-gen en_US en_US.UTF-8
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.

share|improve this answer
    
Thanks it works :) –  HackToHell Jul 11 '12 at 14:21
7  
I am glad my troubles a year ago helped you get this fixed ;) –  Rinzwind Jul 11 '12 at 14:34
    
Shouldn't this locale be generated by default? I mean en, en_AU, en_CA, en_GB are present by default but not en_US? –  Daniel Serodio Aug 15 '12 at 16:05
    
Ping! Your troubles are still useful. :-D –  Brian Visel Sep 27 '12 at 21:35
1  
What does the dpkg-reconfigure locales command do in more detail? –  Victor Nov 17 '12 at 3:38

Just add the following to your .bashrc file (assuming you're using bash)

export LC_ALL="en_US.UTF-8"
share|improve this answer
2  
This sweet fix worked for me on my Amazon-EC2 image (Was running their default RHEL AMI) Thanks so much! :) –  gideon Dec 1 '12 at 15:07
    
This one worked for me with my digitalocean's Ubuntu 12.04 image. –  Inan Berbatov Sep 25 '13 at 11:49

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.

share|improve this answer
    
This is the best answer. It's not that my locales were setup incorrectly, but they didn't actually exist. I think this is similar to the OP's problem as well ("No such file or directory" is pretty clear if your locale is set right!). –  Breakthrough Oct 27 '13 at 21:49
    
I was getting the OPs issue ever time i was using apt-get on Ubuntu 12.04 This solved it perfectly without having to edit any files. –  Deepend Jun 10 at 10:13

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-8

where ru_RU is your country code.

share|improve this answer

For 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"
share|improve this answer

There is a command for that:

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

It updates /etc/default/locale with provided values.

share|improve this answer
$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en

if you run KDE check file setlocale.sh

share|improve this answer

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....

share|improve this answer

This worked for me when I had the same problem (solution provided by dman):

sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
share|improve this answer
    
I wasn't quite sure how to add the url to the comment. @EliahKagan –  pythonhunter Aug 27 at 6:28
    
No problem--the date/timestamp next to a comment is what links to it directly. ...So, I've noticed glarrain's comment (calling for > instead of >>) seems like a reply to dman's. I don't actually know which way is right or best, but if you have any insight into this you could expand this answer with more information. (You don't have to though.) –  Eliah Kagan Aug 27 at 6:32

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.