FAIRYFAR-INTERNAL
 
  FAIRYFAR-INTERNAL  |  SITEMAP  |  ABOUT-ME  |  HOME  
您的足迹: RedHat编译安装openGauss
RedHat编译安装openGauss

本文适用于openGauss2.0.0

环境:Red Hat Enterprise Linux Server 7.6

官方说明文档提示,openGauss仅支持以下操作系统:

  • CentOS 7.6(x86架构)
  • openEuler-20.03-LTS(aarch64架构)

编译脚本对此也是加了限制,监测到非上述平台时,将拒绝编译。经过试验,openGauss在Red Hat 7.6上是可以编译通过的。

一、官方参考

二、步骤

准备文件

假设文件路径全部在:/opt/openGauss/

准备以下文件:

  • /opt/openGauss/openGauss-server/ :server源码,下载
  • /opt/openGauss/binarylibs/:二进制的第三方库(必须是与server源码配套的版本),下载后解压到此目录,下载
  • /opt/openGauss/gauss_data/:openGauss数据目录。

修改脚本

默认情况下,编译脚本会检查编译平台的操作系统类型,Red Hat操作系统会被拒绝编译。需要修改一下脚本。

snippet.bash
[yz@test openGauss-server]$ vim build/script/mpp_package.sh
kernel="centos"  #强制为centos

PS:最新版本脚本已经变更为:

src/get_PlatForm_str.sh

修改代码

openGauss 2.0版本有个bug:强制要求用户登录后修改密码,但是如果用户名中有“-”等特殊字符,语法会报错,无法修改密码,导致一方面无法修改密码,而又强制要求修改密码。以下修改一下,不强制要求修改密码:

snippet.c
static void knl_t_postgres_init(knl_t_postgres_context* postgres_cxt)
{
    postgres_cxt->clear_key_memory = false;
    ……
    postgres_cxt->password_changed = true;  //此处由false改为true。

编译

以下编译debug版本:

snippet.bash
[yz@test ~]$ cd /opt/openGauss/openGauss-server
[yz@test openGauss-server]$ sh build.sh -m debug -3rd /opt/openGauss/binarylibs
……
Makefile:71: warning: overriding recipe for target `../../../src/lib/elog/elog.a'
Makefile:65: warning: ignoring old recipe for target `../../../src/lib/elog/elog.a'
openGauss installation complete.
The option 'nopkg' is on, no package will be zipped.

当看到“openGauss installation complete.”提示时,表示编译成功。

编译后,二进制文件在:

/opt/openGauss/openGauss-server/mppdbtempinstall

初始化

snippet.bash
[yz@test ~]$ export LD_LIBRARY_PATH=/opt/openGauss/openGauss-server/mppdb_temp_install/lib/:$LD_LIBRARY_PATH
[yz@test ~]$ cd /opt/openGauss/openGauss-server/mppdb_temp_install/bin
[yz@test bin]$ ./gs_initdb -D /opt/openGauss/gauss_data/ --nodename=gauss
……
Success. You can now start the database server of single node using:
 
    ./gaussdb -D /opt/openGauss/gauss_data
or
    ./gs_ctl start -D /opt/openGauss/gauss_data -l logfile

启动与客户端连接

snippet.bash
[yz@test ~]$ cd /opt/openGauss/openGauss-server/mppdb_temp_install/bin
[yz@test bin]$ ./gs_ctl start -D /opt/openGauss/gauss_data -Z single_node -l logfile
[yz@test bin]$ ./gsql postgres
gsql ((openGauss 2.0.0 build 5af8c3d0) compiled at 2021-04-12 14:45:44 commit 0 last mr  debug)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
 
postgres=# 

加载

openGauss 1.0要求数据文件必须放到数据目录下的pg_copydir子目录中,openGauss 2.0已经无此约束要求,加载方法完全同PostgreSQL。



打赏作者以资鼓励: