系统版本CentOS release 5.7 (Final)
另外一台服务器是6.5在安装mongodb3.3.12版本时没有报任何错误信息。
启动mongodb提示错误如下
/usr/local/mongodb/mongodb3.3.12/bin/mongod: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory
分析原因
系统不知道libssl.so.10放在哪个目录下,全局find了一下libssl.so.10文件没有找到。
在以下地址找到ssl101的安装信息
https://centos.pkgs.org/5/atomic-x86_64/openssl101e-1.0.1e-9.el5.art.i386.rpm.html
执行命令:# yum install openssl101e
第二次运行mongoDB提示信息如下
/usr/local/mongodb/mongodb3.3.12/bin/mongod: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by /usr/local/mongodb/mongodb3.3.12/bin/mongod)
/usr/local/mongodb/mongodb3.3.12/bin/mongod: /lib64/libc.so.6: version `GLIBC_2.6' not found (required by /usr/local/mongodb/mongodb3.3.12/bin/mongod)
/usr/local/mongodb/mongodb3.3.12/bin/mongod: /lib64/libc.so.6: version `GLIBC_2.8' not found (required by /usr/local/mongodb/mongodb3.3.12/bin/mongod)
/usr/local/mongodb/mongodb3.3.12/bin/mongod: /lib64/libc.so.6: version `GLIBC_2.9' not found (required by /usr/local/mongodb/mongodb3.3.12/bin/mongod)
/usr/local/mongodb/mongodb3.3.12/bin/mongod: /lib64/libc.so.6: version `GLIBC_2.10' not found (required by /usr/local/mongodb/mongodb3.3.12/bin/mongod)
分析原因
出现了/lib64/libc.so.6: version `GLIBC_2.7’ not found问题,glibc版本过低。
先查看一下当前系统glibc的情况:
strings /lib64/libc.so.6 |grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
没有找到支持2.6以上的,需要重新安装glibc
升级版本:glibc-2.7.tar.gz
[root@dev201 ~]# cd /usr/src/
[root@dev201 src]# tar -zxf glibc-2.7.tar.gz
[root@dev201 src]# cd glibc-2.7
[root@dev201 glibc-2.7]# mkdir -v ../glibc-build
mkdir: created directory `../glibc-build'
[root@dev201 glibc-2.7]# cd ../glibc-build/
[root@dev201 glibc-build]# /usr/src/glibc-2.7/configure --prefix=/usr/
[root@dev201 glibc-build]# make
[root@dev201 glibc-build]# make install
在次查看glibc情况
strings /lib64/libc.so.6 |grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_PRIVATE
第三次运行mongoDB提示信息如下
/usr/local/mongodb/mongodb3.3.12/bin/mongod: /lib64/libc.so.6: version `GLIBC_2.8' not found (required by /usr/local/mongodb/mongodb3.3.12/bin/mongod)
/usr/local/mongodb/mongodb3.3.12/bin/mongod: /lib64/libc.so.6: version `GLIBC_2.9' not found (required by /usr/local/mongodb/mongodb3.3.12/bin/mongod)
/usr/local/mongodb/mongodb3.3.12/bin/mongod: /lib64/libc.so.6: version `GLIBC_2.10' not found (required by /usr/local/mongodb/mongodb3.3.12/bin/mongod)
看来安装的版本还是不够高了,
网站说在5.7上直接将glibc升级到2.10存在风险,系统会崩溃,所以放弃了升级处理。
试着换mongodb低版本试一下,用mongodb3.1.4启动情况如下:
第四次运行mongoDB提示信息如下
/usr/local/mongodb/mongodb3.1.4/bin/mongod: /usr//lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/local/mongodb/mongodb3.1.4/bin/mongod)
/usr/local/mongodb/mongodb3.1.4/bin/mongod: /usr//lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/local/mongodb/mongodb3.1.4/bin/mongod)
/usr/local/mongodb/mongodb3.1.4/bin/mongod: /usr//lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /usr/local/mongodb/mongodb3.1.4/bin/mongod)
/usr/local/mongodb/mongodb3.1.4/bin/mongod: /usr//lib64/libstdc++.so.6: version `CXXABI_1.3.3' not found (required by /usr/local/mongodb/mongodb3.1.4/bin/mongod)
/usr/local/mongodb/mongodb3.1.4/bin/mongod: /usr//lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/local/mongodb/mongodb3.1.4/bin/mongod)
/usr/local/mongodb/mongodb3.1.4/bin/mongod: /usr//lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/local/mongodb/mongodb3.1.4/bin/mongod)
分析原因
gcc编译器版本过低
[root@jstukw4cgk9nve mongodb3.1.4]# strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_FORCE_NEW
暂时放弃在该台服务器上安装配置mongoDB,编译器版本不够高,主要担心升级以后对系统以前程序和环境有所影响。
解决办法
http://ftp.gnu.org/gnu/glibc/
下载相关并安装GLIBC_2.8、GLIBC_2.9、GLIBC_2.10.1进行安装配置,目前可以正常启动Mongodb。
安装方法见本页glibc-2.7.tar.gz安装方案即可。
主要原因是系统版本过底,导致C运行库的版本过底导致。