14

I just did a fresh install of ubuntu using debootstrap. When I do sudo aptitude upgrade, I get this error message:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en_US:en",
    LC_ALL = (unset),
    LANG = "en_US.ISO-8859-1"
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

Can someone please tell me how to resolve this issue? I see a lot of postings similar to this online but none of them seems to resolve the problem.

I am using Ubuntu 14.04 LTS. Thanks.


FYI:

$ locale -a
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.iso88591
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX

and

$ locale
LANG=en_US.ISO-8859-1
LANGUAGE=en_US:en
LC_CTYPE="en_US.ISO-8859-1"
LC_NUMERIC="en_US.ISO-8859-1"
LC_TIME="en_US.ISO-8859-1"
LC_COLLATE="en_US.ISO-8859-1"
LC_MONETARY="en_US.ISO-8859-1"
LC_MESSAGES="en_US.ISO-8859-1"
LC_PAPER="en_US.ISO-8859-1"
LC_NAME="en_US.ISO-8859-1"
LC_ADDRESS="en_US.ISO-8859-1"
LC_TELEPHONE="en_US.ISO-8859-1"
LC_MEASUREMENT="en_US.ISO-8859-1"
LC_IDENTIFICATION="en_US.ISO-8859-1"
LC_ALL=
1

6 Answers 6

11

An Ubuntu desktop should be set up with UTF-8 encoding. For some reason your system tries to set the latin1 locale en_US.ISO-8859-1. You should really change that.

Maybe the setting takes place in /etc/default/locale.

Whereever it happens, change it to

LANG=en_US.UTF-8

or else you will encounter various locale related surprises.

12
  • Are you sure that's the one to use? How do you know? Commented May 9, 2014 at 15:39
  • @user1527227: Well, almost. ;) Because AFAIK en_US.UTF-8 comes pre-generated on every Ubuntu desktop. But you can easily check it by running the locale -a command. It would be good if you edited the question and added the output of that command. Commented May 9, 2014 at 16:39
  • i added the info you requested. Commented May 9, 2014 at 16:52
  • 1
    @user1527227: Ok, and there we can see en_US.utf8 in the locale -a output. My advice to change from en_US.ISO-8859-1 to en_US.UTF-8 stands. Commented May 9, 2014 at 17:07
  • Thank you. Do you know how to exactly do that? I do not see /etc/default/locale. Can I just run sudo locale-gen en_US.utf8? Commented May 9, 2014 at 17:10
10

A permanent solution for locale issue is to export the locale variables in your ~/.bash_profile. You can also use /etc/profile file instead of .bash_profile to have the change take effect for all users on the system.

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
" >> ~/.bash_profile

Don't forget to start a new shell or to manually source ~/.bash_profile.

2
  • Just a heads-up -- I wouldn't normally approve an edit that removed a link to your blog, but you did not disclose that you were linking to your personal content in your post. You can add the link back in if you'd like, but please make sure to review Expected Behavior, specifically, "if you mention your product, website, etc. in your question or answer, you must disclose your affiliation in your post." Thanks! Commented Apr 14, 2022 at 4:05
  • Also note that, while I didn't test it, I'm fairly confident that your blog post has an error. You can't source from within an executed script (e.g. ./set_locale.sh as your blog states). The new values will not take effect in the current shell if you do. You would need to source the script itself (e.g. source set_locale.sh) Commented Apr 14, 2022 at 4:12
7

The debootstrap doesn't create a locale. So we use something else as a locale. Use this command:

sudo locale-gen en_US.ISO-8859-1

I hope this helps!

3
  • Nope, aptitude is valid too. Your answer will not give any changes to the OP.
    – Danatela
    Commented May 9, 2014 at 4:54
  • 2
    While that may solve the locale error, it gives you a system with latin1 encoding, which is not suitable on Ubuntu. Commented May 9, 2014 at 14:11
  • Also, in ~/.kde.env/setlocale.sh, you set export LANG=en_US.UTF-8 Commented May 13, 2014 at 16:41
4

This works for me.

  1. export LANGUAGE=en_US.UTF-8
  2. export LANG=en_US.UTF-8
  3. export LC_ALL=en_US.UTF-8
  4. sudo locale-gen en_US.UTF-8
  5. sudo dpkg-reconfigure locales
1
  • is your working permanent to fix the locale issue?
    – Timo
    Commented May 14, 2021 at 13:59
1

Add LC_ALL="en_US.UTF-8" to /etc/environment and then restart the instance/machine

For more info visit this blog

http://www.pixelninja.me/how-to-fix-invalid-locale-setting-in-ubuntu-14-04-in-the-cloud/

1

What worked for me is as follows:

export LANGUAGE=en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 sudo locale-gen en_US.UTF-8 sudo dpkg-reconfigure locales

For a permanent solution you can put

export LANGUAGE=en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8

in your .zshrc or .bashrc

Ref

  1. https://jee-appy.blogspot.com/2016/02/set-locale-on-ubuntu-permanent-solution.html
  2. https://www.thomas-krenn.com/en/wiki/Perl_warning_Setting_locale_failed_in_Debian

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .