仮想マシンにmongoをインストールする際のエラー


40

mongoドキュメントを使用してmongoをインストールしようとしています。UbuntuにMongoDBをインストールします。インストール中にエラーは表示されませんでした。しかし、mongoコマンドを実行すると、ターミナルにエラーが表示されます。

グローバル初期化の失敗:BadValue無効またはユーザーロケールが設定されていません。LANGおよび/またはLC_ *環境変数が正しく設定されていることを確認してください

回答:


89

あなたのように見えるlocale設定が壊れたか、そのVMに存在しない、またはそのVM上に、少なくともそのセッションされています。ロケールが正しく設定されていないと、MongoDBの依存関係の1つ(boost)が失敗します(SERVER-9032を参照)。参考までに、SERVER-9032の変更前は、この問題は引き続き発生していましたが、このように見えました

時々、ログアウトして再度ログインすることで解決できる場合があります(現在のセッションでのみ破損する)か、実行sudo locale-genを試して、生成が成功したことを確認できます。

それまでの間、実行mongo(またはmongodその他)を行うための回避策としてLC_ALL、プログラムを開始する前に変数を手動で設定するだけです。

export LC_ALL=C
mongo 

新しいVMを作成するときにロケールを構成することになっていますか?
アレックス

1
OSのインストール方法に依存します-ほとんどのセットアップフロー/ UIは、あなたがどこにいて、どの言語を使用しているかを尋ねることによってこれを処理します-古い学校に行く場合は、これを自分で行う必要があります私は何年もロケール選択画面を見ていなかったと確信しています。基本的に、これがあなたのために行われることを期待するのは不合理ではありません、そしてあなたはそれが何らかの方法でめちゃくちゃにされたときだけそれについて聞くべきです。
アダムC

おかげで、CentOS Vmだったので、そのためにはAnsibleタスクが必要だと思います!
アレックス

15

また、Ubuntu 12.04にMongoDBをインストールしようとしましたが、仮想マシン(XEN)で同じエラーが発生しました。私にとって、modifiying /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"

Adam Cの回避策exportも役立っており、おそらくもっと手の込んだ答えでしょう。


4

ここで提供される他の回答は問題を正しく解決しますが、次のStackoverflowの質問は、Vagrant VMにMongoDBをインストールして上記のエラーを取得する際の実際の問題を示しています。

この問題は、ホストマシンがsshを介してゲストにロケールを設定するために発生します。

したがって、Vagrantfile内のホストロケールをオーバーライドすることを提案する答えは、たった1行で永続的に解決します。

Vagrant.configure(2) do |config|

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

    # ...

end

また、ホスト上の実際のLC_ALL値を変更しないというコメントにも注意してください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.