最近学习一项新技能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>');
^
复制
安装环境
- 虚拟机VM15 操作系统centos7.6 x86架构
- 硬件配置 CPU:1C 内存:2G 磁盘: 60G
- 依赖要求 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)
复制
参考文章:
https://docs.mogdb.io/zh/mogdb/v3.0/17-xml-type
https://opengauss.org/zh/docs/3.0.0/docs/Compilationguide/版本编译.html
评论
