ti
By:
ti

Language Problem on Ubuntu 14.04

July 8, 2014 43.5k views

Droplet Ubuntu 14.04 LTS
Error on installing postgresql:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_PAPER = "en_US.UTF-8",
        LC_ADDRESS = "en_US.UTF-8",
        LC_MONETARY = "en_US.UTF-8",
        LC_NUMERIC = "en_US.UTF-8",
        LC_TELEPHONE = "en_US.UTF-8",
        LC_IDENTIFICATION = "en_US.UTF-8",
        LC_MEASUREMENT = "en_US.UTF-8",
        LC_TIME = "en_US.UTF-8",
        LC_NAME = "en_US.UTF-8",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.

With this error postgresql cant start:

Setting up postgresql-9.3 (9.3.4-1) ...
Error: The locale requested by the environment is invalid.
Error: could not create default cluster. Please create it manually with

  pg_createcluster 9.3 main --start

or a similar command (see 'man pg_createcluster').
update-alternatives: using /usr/share/postgresql/9.3/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
 * No PostgreSQL clusters exist; see "man pg_createcluster"

I've tried various methods presented by google, none solved my problem:

apt-get install --reinstall locales && sudo dpkg-reconfigure locales

dpkg-reconfigure locales

locale-gen en_US.UTF-8

locale-gen --no-purge --lang en_US.UTF-8
2 comments
  • Can you run locale -a and post the output?

  • locale -a
    locale: Cannot set LCCOLLATE to default locale: No such file or directory
    C
    C.UTF-8
    POSIX
    en
    AG
    enAG.utf8
    en
    AU.utf8
    enBW.utf8
    en
    CA.utf8
    enDK.utf8
    en
    GB.utf8
    enHK.utf8
    en
    IE.utf8
    enIN
    en
    IN.utf8
    enNG
    en
    NG.utf8
    enNZ.utf8
    en
    PH.utf8
    enSG.utf8
    en
    US.utf8
    enZA.utf8
    en
    ZM
    enZM.utf8
    en
    ZW.utf8

6 Answers

The problem seems to be that LANGUAGE is unset.

Try:

export LANGUAGE="en_US.UTF-8"
echo 'LANGUAGE="en_US.UTF-8"' >> /etc/default/locale
echo 'LC_ALL="en_US.UTF-8"' >> /etc/default/locale

I was dealing with this problem FOR MANY HOURS with nothing suggested here as a working solution for me, until i found the answer on askubuntu. Turns out the problem was that i was CONNECTING FROM OS-X (my MAC) and supposedly If you are remotely connected to the Droplet over ssh (eg from a macosx device) you need to set these variables on the machine you are connecting from, So in short all that was needed was to add the following to the ~/.bash_profile (~/.zshrc for me cause i use oh my zsh)

#fix for locale issues when connecting to ubuntu servers
export LANG="en_US.utf8"
export LANGUAGE="en_US.utf8"
export LC_ALL="en_US.utf8"

BAM!!, i tried EVERYTHING from editing the etc/default/locale file and the /etc/enviroment and many other things wise fellas recommended, but nothing ever worked, until i did THAT.

And let me say that BEFORE trying to resolve this issue i made a snapshot, so, just in case, to make sure it was not a mixed solution, i returned to my snapshot as it was BEFORE attempting to solve the issue, and again, the local solution (modifying my .zshrc file) was everything i needed. WEIRD.

Solution:

Do this

export LC_ALL="en_US.UTF-8"

and this (9.3 is my current version postgresql. write your version)

sudo pg_createcluster 9.3 main --start

Sorry, i want to set in my droplet the italian language. How can i do?

Thanks

The only solution that worked for me was to edit /etc/bash.bashrc by adding the following to the bottom of the file...

LANG="en_GB.UTF-8" # change to your location
LANGUAGE="en_GB.UTF-8"
LC_ALL="en_GB.UTF-8" 

Exit and SSH back in, type locale and all the blanks were filled in.
(Ubuntu 16.04.2 LTS)

Have another answer? Share your knowledge.