Win10使用Docker编译openGuass
参考
前言
看官方文档openGuass支持的操作系统较少,似乎不支持win10,故考虑使用docker创建一个centos7.6容器,然后在上面进行openGuass3.1.0的编译。其他分支感觉都大差不差。
centos实例
首先需要下载docker,我下载的是Docker Desktop。
拉取一个centos:7.6.1810镜像,然后run一个实例。
安装一些基本依赖
yum update -y
yum install -y which gcc gcc-c++ gdb git make cmake wget libaio-devel flex bison ncurses-devel glibc-devel patch lsb_release readline-devel
拉下来的centos镜像可能缺很多东西,提醒缺啥装啥就行。
创建新用户
因为openGauss不能在root用户下启动,因此我们可以创建一个新用户omm。
groupadd dbgroup
useradd -g dbgroup omm
如果希望omm用户可以用到sudo,参照Linux给普通用户添加sudo权限
openGuass编译
流程如图所示
![image-20230528112234284](https://raw.githubusercontent.com/greaterfish/blog_picture/master/blog202305281211467.png)
首先切换成omm,如果权限不够就sudo执行命令。
su omm
代码下载
cd /home/omm
mkdir sda
cd sda
git clone https://gitee.com/opengauss/openGauss-server.git openGauss-server -b 3.1.0 #openGauss的代码仓库
这边打算直接用官方提供的编译好的第三方软件,而不自己编译,可以直接跳过官方文档的开源软件编译构建这一步,而只需要直接下载。
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.0/binarylibs/openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
tar -zvxf https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.0/binarylibs/openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
mv openGauss-third_party_binarylibs_Centos7.6_x86_64 binarylibs #重命名为binarylibs
代码编译
官网上提供了两个方式,一个是一键式脚本编译,一个是手动编译。我这边一键式脚本失败几次所以就换成了手动编译。
-
执行如下命令进入到软件代码目录。
cd openGauss-server
-
配置环境变量,根据自己的代码下载位置补充两处“____”
export CODE_BASE=________ # openGauss-server的路径 export BINARYLIBS=________ # binarylibs的路径 export GAUSSHOME=$CODE_BASE/dest/ export GCC_PATH=$BINARYLIBS/buildtools/gcc7.3/ export CC=$GCC_PATH/gcc/bin/gcc export CXX=$GCC_PATH/gcc/bin/g++ export LD_LIBRARY_PATH=$GAUSSHOME/lib:$GCC_PATH/gcc/lib64:$GCC_PATH/isl/lib:$GCC_PATH/mpc/lib/:$GCC_PATH/mpfr/lib/:$GCC_PATH/gmp/lib/:$LD_LIBRARY_PATH export PATH=$GAUSSHOME/bin:$GCC_PATH/gcc/bin:$PATH
-
选择版本进行configure。我这边选择的debug版。
./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib
-
执行如下命令,编译安装。
-
make -s make install -s
-
s参数是silent模式,有些编译信息不会打印出来。
-
如果使用-j参数,make执行的时候会一直增加并发数,有时会遇到“cannot allicate memory”的错。一般-j参数后可指定数字为 cpu数 X 2。如编译环境是4 CPU,可使用make -j8的参数进行编译。
-
我这边加j参数docker会崩溃,所以直接-s参数了。
-
验证
使用omm用户,在~/.bashrc中增加以下环境变量:
export GAUSSHOME=/home/omm/sda/openGauss-server/dest/ ##编译结果的路径,可根据实际情况修改
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
export PATH=$GAUSSHOME/bin:$PATH
使环境变量生效:source ~/.bashrc
建立数据目录和日志目录:
mkdir ~/data
mkdir ~/log
chown -R omm:dbgroup /home/omm/sda/openGauss-server
数据库初始化:
gs_initdb -D /home/omm/data --nodename=db1
启动数据库:
gs_ctl start -D /home/omm/data -Z single_node -l /home/omm/log/opengauss.log