如何編譯安裝 mongodb
本部落格轉載於 https://www.jianshu.com/p/9cbfc2aa5709
雖然MongoDB官方提供了可執行的MongoDB供下載,但本著開源的工程都自己編譯一次,於是從Git上的原始碼來編譯MongoDB,官方的文件都是英文,中文文件找了幾個部落格,過程寫的都不夠全(可能是遇到的問題不一樣)。在此記錄一下本人從原始碼編譯MongoDB的全過程,希望能對有心人有幫助。
環境要求
官方文件docs/building.md中提出的要求如下
- A modern and complete C++11 compiler. One of the following is required:
- VS2015 Update 2 or newer
- GCC 5.3.0
- Clang 3.4 (or Apple XCode 5.1.1 Clang) or newer
- Python 2.7
- SCons 2.5.0 or newer (for MSVC 2015 support)
可知,在centos中需要保證的環境有:
- gcc 5.3.0
- python 2.7
- scons 2.3.5
編譯升級gcc
我這臺伺服器為CentOS-7,上面的gcc版本比較低,版本如下:
[[email protected] gcc-5.3.0]# g++ --version g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) Copyright © 2015 Free Software Foundation, Inc. 本程式是自由軟體;請參看原始碼的版權宣告。本軟體沒有任何擔保; 包括沒有適銷性和某一專用目的下的適用性擔保。
我使用了一個ftp映象站下載GCC 5.3.0的原始碼壓縮包。 然後進行解壓和安裝依賴。
解壓gcc-5.3.0.tar.gz
# 在/opt/gcc-5.3.0目錄中安裝gcc
tar -xvf gcc-5.3.0.tar.gz
下載安裝依賴,下載安裝gcc需要的三個依賴
cd gcc-5.3.0/
./contrib/download_prerequisites (在解壓根目錄中執行)
注意 上一步下載依賴,需要使用wget命令、解壓bz2檔案等,確保安裝了命令具,安裝方法如下:
yum -y install bzip2
yum -y install wget
依賴下載完成後,編譯,更新gcc版本
cd ../ && mkdir gcc-build-5.3.0 && cd gcc-build-5.3.0
# configure
../gcc-5.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
# 編譯
make # 需要等待很久,視機器效能而定
make install
# 切換gcc到新版本
update-alternatives --install /usr/bin/gcc gcc /opt/gcc-5.3.0/gcc-5.3.0
我重新ssh登入後看到更新生效
[[email protected] ~]# g++ --version
g++ (GCC) 5.3.0
Copyright © 2015 Free Software Foundation, Inc.
本程式是自由軟體;請參看原始碼的版權宣告。本軟體沒有任何擔保;
包括沒有適銷性和某一專用目的下的適用性擔保。
安裝python、scons
檢視python版本,滿足要求,不做修改。
[[email protected] gcc-5.3.0]# python -V
Python 2.7.5
安裝scons,下載地址,下載scons-3.0.1.tar.gz版本。
# 依賴解決
yum install pcre-devel python-devel
# 解壓安裝
tar -zxvf scons-3.0.1.tar.gz && cd scons-3.0.1
python setup.py install
驗證scons安裝是否成功,輸入scons -h會顯示提示資訊。
[[email protected] gcc-5.3.0]# scons -h
usage: scons [OPTION] [TARGET] ...
SCons Options:
-b, -d, -e, -m, -S, -t, -w, --environment-overrides, --no-keep-going,
--no-print-directory, --print-directory, --stop, --touch
Ignored for compatibility.
-c, --clean, --remove Remove specified targets and dependencies.
-C DIR, --directory=DIR Change to DIR before doing anything.
--cache-debug=FILE Print CacheDir debug info to FILE.
--cache-disable, --no-cache
# 以下省略
編譯安裝MongoDB
從git上下載MongoDB原始碼
# 下載原始碼
git clone git://github.com/mongodb/mongo.git
cd mongo
# 列出所有版本
git tag -l
# 檢出 需要安裝的版本
git checkout r3.6.3
官方文件中介紹,linux下編譯需要安裝openssl-devel
On Linux, you will need to install a compiler gcc or clang, as well as glibc headers which are usually included in a package named glibc-devel.
- On Debian and Ubuntu systems, you must install the libssl-dev package to compile with SSL support.
- On Red Hat and CentOS systems, you must install the openssl-devel package to compile with SSL support.
openssl-devel安裝命令如下:
yum install openssl openssl-devel
安裝python 依賴包,通過在程式碼根目錄中執行如下命令
# 在mongoDB解壓根目錄中執行
pip install -r buildscripts/requirements.txt
編譯MongoDB原始碼並安裝
注意:本人開始編譯所有元件,等待很久以後磁碟空間不夠用,退出時編譯已佔用了12G空間以上,若需要編譯所有,請留意磁碟大小。
如果有報錯 Can't find libcurl or curl/curl.h ,則需要安裝sudo apt-get install libcurl3-dev
# 編譯所有元件,需要很大磁碟空間,注意虛擬機器磁碟大小
scons all
# 編譯核心元件 mongod, mongos, shell
scons core
# 安裝( 安裝到/opt/mongo )
scons --prefix=/opt/mongo install
# 如果需要lib庫和include標頭檔案 需要加上 –full 引數如下:
# scons –prefix=/opt/mongo –full install
備註:/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的問題請參考
https://itbilu.com/linux/management/NymXRUieg.html