ошибка установки монго на виртуальной машине

40

Я пытаюсь установить mongo, используя документацию mongo: Установите MongoDB в Ubuntu, при установке ошибок не было. Но при запуске mongoкоманды в терминале отображалась следующая ошибка.

Не удалось выполнить глобальную инициализацию: BadValue Неверный или не задан языковой стандарт пользователя. Убедитесь, что переменные окружения LANG и / или LC_ * установлены правильно

Гаян Чарит
источник

Ответы:

89

Похоже, что ваши localeнастройки повреждены или отсутствуют на этой виртуальной машине или, по крайней мере, на этом сеансе. Одна из зависимостей MongoDB ( boost ) завершится с ошибкой, если локаль установлена ​​неправильно (см. SERVER-9032 ). Для справки, до изменения SERVER-9032 эта проблема все еще возникала, но выглядела так .

Иногда выход из системы и повторный вход могут исправить это (только для текущего сеанса), или вы можете попробовать запустить, sudo locale-genчтобы убедиться, что генерация прошла успешно.

Тем временем, в качестве обходного пути для запуска mongo(или mongodдр.), Просто установите LC_ALLпеременную вручную перед запуском программы:

export LC_ALL=C
mongo 
Адам С
источник
Должны ли мы конфигурировать локаль при создании новой виртуальной машины?
Алекс
1
Зависит от того, как вы устанавливаете свою ОС - большинство потоков установки / пользовательские интерфейсы позаботятся об этом, спросив вас, где вы находитесь и на каком языке вы пользуетесь - если вы пойдете в школу, вам, возможно, придется сделать это самостоятельно, но Я уверен, что не видел экран выбора локали в течение многих лет. По сути, вполне разумно ожидать, что это будет сделано для вас, и вы должны слышать об этом только тогда, когда он каким-то образом облажался.
Адам С
Спасибо, это был CentOS Vm, так что я думаю, что для этого мне нужно задание Ansible!
Алекс
15

Я также попытался установить MongoDB на Ubuntu 12.04 и получил ту же ошибку на виртуальной машине (XEN). Для меня модификация /etc/default/localeсделала свое дело. Я получил это работает с этими настройками:

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

Или другой рабочий конфиг будет (обратите внимание на кавычки и: en):

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

Обход Адама С.export также помог и, вероятно, является более сложным ответом.

LeBird
источник
4

Хотя другие ответы, представленные здесь, решают проблему правильно, следующий вопрос Stackoverflow привел меня к реальной проблеме, когда MongoDB установлен в Vagrant VM и появляется вышеуказанная ошибка:

Эта проблема возникает из-за того, что хост-компьютер поставил гостевой язык через ssh.

Таким образом, ответ, предлагающий переопределить языковой стандарт хоста в Vagrantfile, решает его навсегда с помощью только строки:

Vagrant.configure(2) do |config|

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

    # ...

end

Также обратите внимание на комментарии о том, что он не изменяет фактическое значение LC_ALL на хосте.

conceptdeluxe
источник
1

На основании этого https://askubuntu.com/a/227513/59618 вы можете просто:

$ 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.
psychok7
источник
не работал для меня
Иман Мохамади