MongoDB(一)源码安装

下载与安装

用的操作系统比较老,官网上没有对应的二进制包,github上的release一直也没有下载下来,直接git clone下代码, git clone https://github.com/mongodb/mongo.git。

查看docs下的building.md编译的依赖环境,我这版本的要求gcc和python,要求GCC 5.4.0 or newer ,Python 2.7.x and Pip modules:pyyaml和typing 。

升级gcc

先安装gcc,从官网下载的源代码,安装依赖包:

./contrib/download_prerequisites

安装的时候报错“bzip2:无法 exec: 没有那个文件或目录”,我看命令行,用的tar命令么,这命令可以用么,查了下才知道tar只是个管理工具,相当于一个壳,真正压缩的不同的格式的用到了其他的工具,比如这个bzip2,安装下就好了。

yum install bzip2 

然后configure下,make,然后报错“configure: error: error verifying int64_t uses long long”查了下,原因可能是因为没有安装g++,yum安装

yum install gcc-c++ libstdc++-devel

继续make,在make install,最后需要在替换下系统中默认的gcc

rm /usr/bin/gcc
/usr/sbin/update-alternatives --install  /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.2.0 52

8核的机器编译了将近两个小时,然后gcc -v 验证下版本。可以参考:Linux升级安装GCC

Python Prerequisites

安装python和相关包,这个yaml是yum源的扩展包 yum install python-yaml

CentOS yum源 中默认没有 pip,需要安装 扩展源EPEL yum -y install epel-release yum -y install python-pip pip install typing

开始没有按照git上给的要求安装Python的相关库,因为git上的说明只说了Python的pyyal和typing,结果在安装mongo的时候报错:“no module named cheetah.template”,按照github上的要求,安装requirements即可。

$ pip2 install -r buildscripts/requirements.txt

安装scons

源码包下载地址,下载后 依赖解决

yum install pcre-devel python-devel

解压安装

tar -zxvf scons-2.3.6.tar.gz && cd scons-2.3.6
python setup.py install

安装mongodb

python2 buildscripts/scons.py all
python2 buildscripts/scons.py --prefix=/opt/mongo install

安装也要不短的时间,然后再进入/opt/mongo/bin下运行mongd,报错

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

按照解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found 的问题解决即可,然在运行,提示data目录不存在,说明已经可以运行了。

运行测试

可以把Mongodb的bin路径加到PATH中,不用每次都切换到那个目录:

export PATH=/opt/mongo/bin:$PATH

然后找个大的目录,建立个db的文件夹,默认的是在/data/db下,如果修改,可以指定路径运行:

mongod --dbpath=/home/mongodb/data/

看见监听27017端口了就是正常运行了。

参考

源码编译MongoDB

Table of Contents