błąd podczas instalowania mongo na maszynie wirtualnej

40

Próbuję zainstalować Mongo, korzystając z dokumentacji Mongo: Zainstaluj MongoDB na Ubuntu, nie wystąpiły błędy podczas instalacji. Ale po uruchomieniu mongopolecenia w terminalu pojawił się następujący błąd.

Nieudana globalna inicjalizacja: BadValue Niepoprawny lub brak ustawień regionalnych użytkownika. Upewnij się, że zmienne środowiskowe LANG i / lub LC_ * są ustawione poprawnie

Gayan Charith
źródło

Odpowiedzi:

89

Wygląda na to, że twoje localeustawienia są uszkodzone lub nie istnieją na tej maszynie wirtualnej lub przynajmniej na tej sesji na tej maszynie wirtualnej. Jedna z zależności MongoDB ( boost ) zakończy się niepowodzeniem, gdy ustawienia narodowe nie zostaną poprawnie ustawione (patrz SERVER-9032 ). Dla porównania, przed zmianą w SERVER-9032 problem ten nadal występował, ale wyglądał tak .

Czasami wylogowanie i ponowne zalogowanie może to naprawić (zepsute tylko dla bieżącej sesji) lub możesz spróbować uruchomić, sudo locale-genaby upewnić się, że generowanie się powiodło.

W międzyczasie, aby obejść problem z uruchomieniem mongo(lub mongoditp.), Po prostu ustaw LC_ALLzmienną ręcznie przed uruchomieniem programu:

export LC_ALL=C
mongo 
Adam C.
źródło
Czy mamy konfigurować ustawienia regionalne podczas tworzenia nowej maszyny wirtualnej?
Alex
1
Zależy od tego, jak wykonasz instalację systemu operacyjnego - większość przepływów konfiguracji / interfejsów użytkownika zajmie się tym, pytając cię, gdzie jesteś i jakiego języka używasz - jeśli pójdziesz do starej szkoły, musiałbyś to zrobić samodzielnie, ale Jestem pewien, że od lat nie widziałem ekranu wyboru lokalizacji. Zasadniczo nie jest nierozsądne oczekiwać, że zostanie to zrobione dla ciebie i powinieneś usłyszeć o tym tylko wtedy, gdy jest to popsute.
Adam C,
Dzięki, to był CentOS Vm, więc myślę, że potrzebuję do tego zadania Ansible!
Alex
15

Próbowałem także zainstalować MongoDB na Ubuntu 12.04 i dostałem ten sam błąd na maszynie wirtualnej (XEN). U mnie modyfikacja załatwiła sprawę /etc/default/locale. Mam to działa z tymi ustawieniami:

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

Lub inna działająca konfiguracja to (pamiętaj o cudzysłowach i: en):

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

Obejście Adama C.export również pomogło i jest prawdopodobnie bardziej złożoną odpowiedzią.

LeBird
źródło
4

Chociaż inne odpowiedzi podane tutaj poprawnie rozwiązują problem, następujące pytanie Stackoverflow doprowadziło mnie do tego, co jest rzeczywistym problemem, gdy MongoDB jest zainstalowany na Vagrant VM i pojawia się powyższy błąd:

Ten problem pojawia się, ponieważ maszyna hosta podała ustawienia regionalne jako gość za pośrednictwem ssh.

Zatem odpowiedź sugerująca przesłonięcie ustawień narodowych hosta w pliku Vagrantfile rozwiązuje go na stałe za pomocą tylko jednej linii:

Vagrant.configure(2) do |config|

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

    # ...

end

Zwróć także uwagę na komentarze, że nie modyfikuje to rzeczywistej wartości LC_ALL na hoście.

conceptdeluxe
źródło
1

Na podstawie tego https://askubuntu.com/a/227513/59618 możesz po prostu:

$ 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
źródło
nie działało dla mnie
Iman Mohamadi