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


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 также помог и, вероятно, является более сложным ответом.


4

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

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

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

Vagrant.configure(2) do |config|

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

    # ...

end

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.