在虚拟机中安装mongo时出错


Answers:


89

看起来您的locale设置在该VM上或至少在该VM上的该会话上损坏或不存在。如果未正确设置区域设置,则MongoDB的依赖项之一(boost)将失败(请参阅SERVER-9032)。供参考,在SERVER-9032中进行更改之前,此问题仍然发生,但看起来像这样

有时注销并重新登录可以解决该问题(仅在当前会话中无效),或者您可以尝试运行sudo locale-gen以确保生成成功。

同时,作为一种运行mongo(或其他mongod方式)的解决方法,只需LC_ALL在启动程序之前手动设置变量即可:

export LC_ALL=C
mongo 

创建新的VM时是否应该配置语言环境?
亚历克斯(Alex)

1
取决于您的操作系统安装方式-大多数设置流程/ UI都将通过询问您所在的位置和使用的语言来为您解决此问题-如果您上了老学校,则可能必须自己进行此操作,但是我很确定我已经好几年没有看到语言环境选择屏幕了。基本上,期望为您完成此操作不是没有道理的,并且仅当它以某种方式被拧紧时,您才应该听到它。
亚当C

谢谢,这是一个CentOS Vm,所以我认为我需要一个Ansible任务!
亚历克斯

15

我还尝试在Ubuntu 12.04上安装MongoDB,并在虚拟机(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"

Adam C的解决方法export也有所帮助,并且可能是更详尽的答案。


4

尽管此处提供的其他答案可以正确解决问题,但以下Stackoverflow 问题使我想到了在Vagrant VM中安装MongoDB并遇到上述错误时的实际问题是什么:

出现此问题是因为主机通过ssh将语言环境设置为guest虚拟机。

因此,建议覆盖Vagrantfile中的主机语言环境的答案仅用一行就可以永久解决:

Vagrant.configure(2) do |config|

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

    # ...

end

还要注意有关它不会修改主机上实际LC_ALL值的注释。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.