2019년 9월 3일 화요일

Fedora30 MongoRocks 3.4 설치

- GCC version 9.1.1
- Python 2.7.3

//경우에 따라서 bzip-devl, libcurl-devel, snappy-devel 등을 yum 혹은 dnf 로 install 해야 함


MongoRocks - 3.4 설치 방법

1. RocksDB 설치 및 빌드

//다운로드
git clone -b 5.1.fb https://github.com/facebook/rocksdb.git

//빌드 -> -j는 옵션. 없어도 상관없음
cd rocksdb
CFLAGS=-fPIC CXXFLAGS=-fPIC
make static_lib -j 8
INSTALL_PATH=/usr make install -j 8
make shared_lib -j 8
cd ..


2. MongoRocks 설치

git clone -b v3.4 https://github.com/mongodb-partners/mongo-rocks

3. MongoDB 설치

git clone -b v3.4 https://github.com/mongodb/mongo.git


4. MongoRocks 빌드

mkdir -p mongo/src/mongo/db/modules
cd mongo/src/mongo/db/modules
ln -sf ../../../../../mongo-rocks rocks
cd ../../../../

//gcc 5.4
scons

//5.4보다 버전이 높을 경우
scons --disable-warnings-as-errors

//혹은 .. 여기서도 -j n 옵션으로 속도 올릴 수 있음
buildscripts/scons.py mongod --disable-warnings-as-errors


//MongoDB가 버전이 많아서 dependency를 먼저 설치해야하는 경우도 많은데 3.4버전은
pip install -r buildscripts/resmokelib/requirements.txt

//Master 버전은..
pip3 install -r etc/pip/compile-requirements.txt

//해당 정보는 mongo/docs/building.md 를 참조


5. 실행
//정상적으로 빌드하였다면 (다행..) mongod 파일이 생성되고 해당 파일로 mongoDB를 실행가능

//기본 저장디렉토리 생성 및 rocksdb storage 엔진으로 사용 (default가 WiredTiger이기 때문에 지정해주어야 함)
mkdir -p /data/db
./mongod --storageEngine=rocksdb



6. 기타 에러
// Compression type Snappy is not linked with the binary. at src/mongo/db/modules/rocks/src/rocks_engine.cpp 208  등 같은 에러는 compress 라이브러리를 바꾸어서 실행하면 됨
--rocksdbCompression arg (arg => none, snappy, zlib, lz4, lz4hc, mongod --help로 확인 후 입력) 

//간혹이 아니라.. 빌드가 안되는 상황이 많을 수 있음.. 이때는 보통 rocksdb의 빌드 문제가 많음 mongo-rocks의 git에서는 다음과 같은 형식으로 설치하고 있음 

cd rocksdb; USE_RTTI=1 CFLAGS=-fPIC make static_lib; sudo INSTALL_PATH=/usr make install; cd ..
//재빌드하기전에 make clean 및 /usr/lib/librocksdb.a 파일, /usr/include/rocksdb 폴더 삭제 후 재빌드 권장 (사실 안해도 될수도 있음...)



++ 9/18 추가

requirements 설치 중 에러 1.

‘/usr/lib/rpm/redhat/redhat-hardened-cc1’: No such file or directory


=> dnf install redhat-rpm-config


requirements 설치 중 에러 2.

Python.h: No such file or directory

=> dnf install python2-devel