在RHEL6.3上安装MongoDB后不能启动服务的错误

来源:互联网 发布:动物百科全书软件 编辑:程序博客网 时间:2024/04/29 19:57

我在RHEL6.3上安装OpenStack(Icehouse)的Telemetry时(参见OpenStack的官方安装手册),在controller上需要安装MongoDB。使用yum安装(主要的包来自EPEL),结果发现mongod服务不能启动,查看日志/var/log/mongodb/mongodb.log,给出的错误信息是:

/usr/bin/mongod: symbol lookup error: /usr/bin/mongod: undefined symbol: _ZN7pcrecpp2RE4InitEPKcPKNS_10RE_OptionsE【这个符号是经过编译器name mangling之后的函数标签,可以使用c++filt命令将其还原】

采用单独执行mongod启动服务的方式(命令为mongod --config /etc/mongod.conf),报错信息如下:

about to fork child process, waiting until server is ready for connections.
forked process: 5815
all output going to: /var/log/mongodb/mongodb.log
log file [/var/log/mongodb/mongodb.log] exists; copied to temporary file [/var/log/mongodb/mongodb.log.2014-08-07T09-57-10]
ERROR: child process failed, exited with error number 127


在网上搜索半天没有好的解决办法,后来发现的一个轻巧的解决办法是:

1) 执行mongo命令,可以发现版本是2.4.6

2) 到MongoDB官网上下载已经编译好的x86_64的二进制文件,网址为http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2.4.6.tgz

3) 将上述文件中的mongod文件(先加上可执行权限)替换已经安装的/usr/bin/mongod。


附:有耐心的话,从源码包重新编译也可以解决问题(不过准备好编译环境需要安装其他一些软件包)。从源码包编译大致涉及两个命令:rpm -i mongodb-2.4.6-1.x86_64.src.rpm, rpmbuild -ba mongodb.spec(之前需要进入~/rpmbuild/SPECS目录)。

0 0
原创粉丝点击