error in installing mongo in virtual machine

I try to install mongo using mongo documentation: Install MongoDB on Ubuntu no errors were mentioned during the installation. But when I run the mongo command following error was displayed in the terminal.

Failed global initialization: BadValue Invalid or no user locale set. Please ensure LANG and/or LC_* environment variables are set correctly


Looks like your locale settings are broken or non-existent on that VM, or at least that session on that VM. One of MongoDB's dependencies (boost) will fail when a locale is not correctly set (see SERVER-9032). For reference, before the change in SERVER-9032 this problem still happened but looked like this.

Sometimes logging out and back in can fix it (only broken for current session), or you can try running sudo locale-gen to make sure generation is successful.

In the meantime, as a workaround to get mongo (or mongod etc.) running, just set your LC_ALL variable manually before starting the program:

export LC_ALL=C
mongo 

I also tried installing MongoDB on Ubuntu 12.04 and got the same error on a virtual machine (XEN). For me, modifiying /etc/default/locale did the trick. I got it working with these settings:

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

Or, another working config would be (mind the quotes and the :en):

LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
LC_ALL="en_US.UTF-8"

Adam C's workaround with export also helped and is probably the more elaborate answer.


Though the other answers provided here solve the problem correctly the following Stackoverflow question brought me to what the actual issue is when having MongoDB installed in a Vagrant VM and getting the above error:

This problem appears because host machine put locale to guest via ssh.

Thus the answer suggesting to override the host locale within the Vagrantfile solves it permanently with just a line:

Vagrant.configure(2) do |config|

    ENV['LC_ALL']="en_US.UTF-8"

    # ...

end

Also note the comments about that it does not modify the actual LC_ALL value on the host.


Based on this https://askubuntu.com/a/227513/59618 you can just:

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