开发者
openGauss3.0源码编译安装
openGauss3.0源码编译安装
发表于2024/02/29
1700

最近学习一项新技能opengauss的编译安装,使用安装包安装opengauss之后,xml类型不具备写入,因为默认xml特性未开启,需在./configure编译安装时指定参数 --with-libxml,下面将介绍到opengauss3.0的手动编译安装。

openGauss=# CREATE TABLE xmltest (
openGauss(#     id int,
openGauss(#     data xml
openGauss(# );
CREATE TABLE
openGauss=# INSERT INTO xmltest VALUES (1, '<value>one</value>');
ERROR:  unsupported XML feature
LINE 1: INSERT INTO xmltest VALUES (1, '<value>one</value>');
                                       ^

安装环境

  1. 虚拟机VM15 操作系统centos7.6 x86架构
  2. 硬件配置 CPU:1C 内存:2G 磁盘: 60G
  3. 依赖要求 libaio-devel-0.3.109-13 gcc-c+±4.8.5-44 bison-3.0.4-2 flex-2.5.37-6 bison-3.0.4-2 ncurses-devel-5.9-14.20130511 glibc-devel-2.17-325 patch-2.7.1-12 redhat-lsb-core-4.1-27 readline-devel-6.2-11 perl-5.16.3-299
依赖安装
yum install unzip gcc-c++ readline readline-devel libaio-devel flex bison ncurses-devel glibc-devel patch expect

源码包及开源第三方软件

下载地址: opengauss-sever:https://gitee.com/opengauss/openGauss-server/repository/archive/v3.0.0?format=tar.gz ##由于开源软件编译构建耗时长,特地使用openGauss-third_party编译构建出了一份binarylibs并压缩上传到了网上,用户可以直接下载获取。 已编译好的开源第三方软件:https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.0.0/openGauss-third_party_binarylibs.tar.gz tar -zxvf opengauss-openGauss-server-v3.0.0.tar.gz tar -zxvf openGauss-third_party_binarylibs.tar.gz ##重命名开源第三方软件解压目录为binarylibs mv openGauss-third_party_binarylibs binarylibs

手动编译

1. 检查系统版本

进入到软件代码目录,执行脚本获取自己系统的版本。

cd openGauss-server-3.0.0
sh src/get_PlatForm_str.sh

说明:

  • 显示的结果表示openGauss当前支持的操作系统,openGauss支持的操作系统为centos7.6_x86_64、openeuler_aarch64、openeuler_x86_64。
  • 如果结果显示为Failed或者其他版本,表示openGauss不支持当前操作系统。

2. 配置环境变量

环境变量配置,根据自己的代码下载位置补充两处“____”,将获取到的结果替换下面的***。

export CODE_BASE=________     # openGauss-server-3.0.0的路径
export BINARYLIBS=________    # binarylibs的路径
export GAUSSHOME=$CODE_BASE/dest/
export GCC_PATH=$BINARYLIBS/buildtools/***/gcc7.3/ # 是脚本获取出来的系统版本,此处为centos7.6_x86_64
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

3. 选择debug版进行configure

cd openGauss-server
##执行编译debug版本,加上--with-libxml
./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --with-libxml --enable-debug --enable-cassert --enable-thread-safety --without-readline --without-zlib
##编译安装
make -sj
##显示:All of openGauss successfully made. Ready to install.则此步成功

make install -sj
##显示:openGauss installation complete.编译成功

说明:

  • -s参数是silent模式,有些编译信息不会打印出来。
  • 如果使用-j参数,make执行的时候会一直增加并发数,有时会遇到“cannot allicate memory”的错。一般-j参数后可指定数字为 cpu数 X 2。如编译环境是4 CPU,可使用make -j8的参数进行编译。

编译验证

编译结束后,可按以下方式对编译后的openGauss进行验证:

1. 创建omm用户赋予环境变量

##root用户执行
useradd omm -g dbgrp
passwd omm
chown -R omm: /root/openGauss-server-3.0.0
su - omm
vi ~/.bashrc
export GAUSSHOME=/root/openGauss-server-3.0.0/dest/ ##编译结果的路径,可根据实际情况修改
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
export PATH=$GAUSSHOME/bin:$PATH

source ~/.bashrc

2. 数据库初始化和启动

gs_initdb --pgdata=/home/omm/data --nodename=primary --pwpasswd=opgs@1234 --encoding=UTF-8 --locale=en_US.UTF-8
gs_ctl start -D /home/omm/data -Z single_node -l /home/omm/log/opengauss.log
##查看进程
ps -ef|grep gaussdb
##检查数据库状态
gs_ctl query -D /home/omm/data

3. XML类型的支持情况

gsql -d postgres -r 
CREATE TABLE xmltest (
    id int,
    data xml
);
INSERT INTO xmltest VALUES (1, '<value>one</value>');
INSERT INTO xmltest VALUES (2, '<value>two</value>');
openGauss=# SELECT * FROM xmltest;
 id |        data        
----+--------------------
  1 | <value>one</value>
  2 | <value>two</value>
(2 rows)

openGauss=# SELECT xmlconcat('<foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');
  xmlconcat   
--------------
 <foo/><bar/>
(1 row)

openGauss=# SELECT xmlconcat('<?xml version="1.1"?><foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');
             xmlconcat             
-----------------------------------
 <?xml version="1.1"?><foo/><bar/>
(1 row)
收藏举报
Level 1
0
帖子
0
粉丝
0
获赞