正确编译openGauss&CM&OM

简介: 正确编译openGauss&CM&OM

前言


本文从实际场景出发记录了openGauss,CM,OM整体编译流程,用户只需要选取干净的CentOS 7.6环境,配置好yum源,即可按照文中操作。

一、 编译openGauss

1. 下载源码及依赖环境

  • 安装依赖包
[root@ecs-lee ~]# yum install git libaio-devel flex bison ncurses-devel glibc-devel patch lsb_release readline-devel -y
  • 下载源码
[root@ecs-lee lee]# git clone https://gitee.com/opengauss/openGauss-server.git
Cloning into 'openGauss-server'...
remote: Enumerating objects: 65231, done.
remote: Counting objects: 100% (19426/19426), done.
remote: Compressing objects: 100% (7501/7501), done.
remote: Total 65231 (delta 13941), reused 15163 (delta 11811), pack-reused 45805
Receiving objects: 100% (65231/65231), 202.18 MiB | 1.41 MiB/s, done.
Resolving deltas: 100% (45609/45609), done.
  • 下载三方库
[root@ecs-lee openGauss-server]# wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
--2022-09-18 18:47:11--  https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
Resolving opengauss.obs.cn-south-1.myhuaweicloud.com (opengauss.obs.cn-south-1.myhuaweicloud.com)... 139.159.208.230, 121.37.63.33, 121.37.63.38, ...
Connecting to opengauss.obs.cn-south-1.myhuaweicloud.com (opengauss.obs.cn-south-1.myhuaweicloud.com)|139.159.208.230|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 872769145 (832M) [application/gzip]
Saving to: ‘openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz’
100%[=====================================================================================================================================================================================================================================>] 872,769,145 1.27MB/s   in 10m 35s
2022-09-18 18:57:46 (1.31 MB/s) - ‘openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz’ saved [872769145/872769145]
  • 解压
[root@ecs-lee openGauss-server]#  tar -xf openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
[root@ecs-lee openGauss-server]# ls
aclocal.m4  cmake           config.sh     contrib          dependency.xml         doc        GNUmakefile.in                      License   openGauss-third_party_binarylibs_Centos7.6_x86_64         README.md      Third_Party_Open_Source_Software_Notice
build       CMakeLists.txt  configure     CONTRIBUTING.md  distribute_errmsg.txt  docker     GNUmakefile.in_for_llt              liteom    openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz  simpleInstall  Tools
build.sh    config          configure.in  COPYRIGHT        distribute_escan.txt   escan.txt  hw_partition_interval_exchange.out  Makefile  README.en.md                                              src
[root@ecs-lee openGauss-server]# mv openGauss-third_party_binarylibs_Centos7.6_x86_64 binarylibs

2. 编译代码解读

[root@ecs-lee openGauss-server]# tree build
build
└── script
    ├── aarch64_lite_list
    ├── aarch64_opengauss_list
    ├── build_opengauss.sh
    ├── cmake_package_mini.sh
    ├── gaussdb.ver
    ├── make_win_odbc_vs2010.bat
    ├── opengauss_config_file_mini
    ├── opengauss_release_list_mini
    ├── opengauss_release_list_ubuntu_single
    ├── package_opengauss.sh
    ├── separate_debug_information.sh
    ├── utils
    │   ├── cmake_compile.sh
    │   ├── common.sh
    │   ├── internal_packages_lite.sh
    │   ├── internal_packages.sh
    │   └── make_compile.sh
    ├── x86_64_lite_list
    └── x86_64_opengauss_list
2 directories, 18 files
[root@ecs-lee openGauss-server]# ls -lrt
total 853988
drwxrwxr-x  5 mogdb mogdb      4096 Sep 15 14:57 binarylibs
-rw-r--r--  1 root  root  872769145 Sep 16 20:00 openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
-rw-r--r--  1 root  root       2834 Sep 18 18:43 COPYRIGHT
-rw-r--r--  1 root  root       2402 Sep 18 18:43 CONTRIBUTING.md
-rwxr-xr-x  1 root  root       3692 Sep 18 18:43 CMakeLists.txt
-rw-r--r--  1 root  root      26170 Sep 18 18:43 README.md
-rw-r--r--  1 root  root      27611 Sep 18 18:43 README.en.md
-rw-r--r--  1 root  root       1488 Sep 18 18:43 Makefile
-rw-r--r--  1 root  root       9216 Sep 18 18:43 License
-rw-r--r--  1 root  root       4950 Sep 18 18:43 GNUmakefile.in_for_llt
-rw-r--r--  1 root  root       7758 Sep 18 18:43 GNUmakefile.in
drwxr-xr-x  3 root  root       4096 Sep 18 18:43 Tools
-rw-r--r--  1 root  root     419527 Sep 18 18:43 Third_Party_Open_Source_Software_Notice
-rwxr-xr-x  1 root  root       3290 Sep 18 18:43 build.sh
drwxr-xr-x  3 root  root       4096 Sep 18 18:43 build
-rw-r--r--  1 root  root        385 Sep 18 18:43 aclocal.m4
-rw-r--r--  1 root  root        168 Sep 18 18:43 config.sh
drwxr-xr-x  3 root  root       4096 Sep 18 18:43 cmake
drwxr-xr-x  2 root  root       4096 Sep 18 18:43 config
-rw-r--r--  1 root  root      65000 Sep 18 18:43 configure.in
-rwxr-xr-x  1 root  root     870365 Sep 18 18:43 configure
-rw-r--r--  1 root  root          0 Sep 18 18:43 distribute_escan.txt
-rw-r--r--  1 root  root      97509 Sep 18 18:43 distribute_errmsg.txt
-rw-r--r--  1 root  root       2277 Sep 18 18:43 dependency.xml
drwxr-xr-x 66 root  root       4096 Sep 18 18:43 contrib
drwxr-xr-x  3 root  root       4096 Sep 18 18:43 doc
drwxr-xr-x  3 root  root       4096 Sep 18 18:43 docker
-rw-r--r--  1 root  root      13171 Sep 18 18:43 hw_partition_interval_exchange.out
-rw-r--r--  1 root  root      68486 Sep 18 18:43 escan.txt
drwxr-xr-x  2 root  root       4096 Sep 18 18:43 simpleInstall
drwxr-xr-x  2 root  root       4096 Sep 18 18:43 liteom
drwxr-xr-x 10 root  root       4096 Sep 18 18:43 src

3. 编译参数解读

[root@ecs-lee openGauss-server]# ./build.sh --help
Usage: ./build.sh [OPTION]
    -h|--help                         show help information
    -m|--version_mode                 this values of paramenter is debug, release, memcheck or mini, the default value is release
    -3rd|--binarylib_dir              the parent directory of binarylibs
    -pkg|--package                    (deprecated option)package the project,by default, only compile the project
    -wrap|--wrap_binaries             wrop up the project binaries. By default, only compile the project
    -nopt|--not_optimized             on kunpeng platform, like 1616 version, without LSE optimized
    -f|--config_file                  set postgresql.conf.sample from config_file when packing

4. 编译代码

[root@node1 openGauss-server]# nohup sh build.sh -m release -pkg -3rd /root/binarylibs/ &
[1] 20852
[root@node1 openGauss-server]# nohup: ignoring input and appending output to ‘nohup.out’
[root@node1 openGauss-server]#
[root@node1 openGauss-server]#
[root@node1 openGauss-server]#
[root@node1 openGauss-server]#
[root@node1 openGauss-server]#
[1]+  Done                    nohup sh build.sh -m release -pkg -3rd /root/binarylibs/
[root@node1 openGauss-server]# cat nohup.out
ROOT_DIR : /root/openGauss-server
[makegaussdb] 22-09-25 19:32:58: script dir : /root/openGauss-server/build/script
[makegaussdb] 22-09-25 19:32:58: Work root dir : /root/openGauss-server
...
...
openGauss installation complete.
now, all build has finished!
[makegaussdb] 22-09-25 19:40:09: script dir : /root/openGauss-server/build/script
[makegaussdb] 22-09-25 19:40:09: Work root dir : /root/openGauss-server
Start package opengauss.
./separate_debug_information.sh: line 13: lsb_release: command not found
entry.py is a script, do not separate symbol
...
...
Begin package server
/root/openGauss-server/mppdb_temp_install
make server(all) package success!
packaging libpq...
success!
packaging tools...
success!
Begin to install upgrade_sql files...
Successfully packaged upgrade_sql files.
End package opengauss.
now, all packages has finished!
  • 打包文件
[root@node1 openGauss-server]# ls -lrt output/
total 425664
-rwxr-xr-x. 1 root root 336276142 Sep 25 19:41 openGauss-3.1.0-CentOS-64bit-symbol.tar.gz
-rw-r--r--. 1 root root  86018592 Sep 25 19:41 openGauss-3.1.0-CentOS-64bit.tar.bz2
-rw-r--r--. 1 root root        65 Sep 25 19:41 openGauss-3.1.0-CentOS-64bit.sha256
-rw-r--r--. 1 root root   5083721 Sep 25 19:41 openGauss-3.1.0-CentOS-64bit-Libpq.tar.gz
-rw-r--r--. 1 root root   8015868 Sep 25 19:41 openGauss-3.1.0-CentOS-64bit-tools.tar.gz
-rw-------. 1 root root    467678 Sep 25 19:41 upgrade_sql.tar.gz
-rw-------. 1 root root        65 Sep 25 19:41 upgrade_sql.sha256

二、编译OM

1. clone 代码

[root@node1 ~]# git clone https://gitee.com/opengauss/openGauss-OM.git
Cloning into 'openGauss-OM'...
remote: Enumerating objects: 3925, done.
remote: Counting objects: 100% (1541/1541), done.
remote: Compressing objects: 100% (1069/1069), done.
remote: Total 3925 (delta 975), reused 794 (delta 467), pack-reused 2384
Receiving objects: 100% (3925/3925), 2.48 MiB | 0 bytes/s, done.
Resolving deltas: 100% (2551/2551), done.

2. 帮助

[root@node1 ~]# cd openGauss-OM/
[root@node1 openGauss-OM]# ls
build  build.sh  LICENSE  other  README.en.md  README.md  script  simpleInstall
[root@node1 openGauss-OM]# sh build.sh --help
ROOT_DIR : /root/openGauss-OM
Usage: build.sh [OPTION]
    -h|--help                         show help information
    -3rd|--binarylib_dir              the parent directory of binarylibs

3. 编译

./build.sh --help or ./build.sh -h
[root@node1 openGauss-OM]# sh build.sh -3rd /root/binarylibs
ROOT_DIR : /root/openGauss-OM
Everything is ready.
success!

4. 查看文件

[root@node1 openGauss-OM]# ls
build  build.log  build.sh  LICENSE  other  package  README.en.md  README.md  script  simpleInstall
[root@node1 openGauss-OM]# ls -lrt package/
total 11664
-rw-r--r--. 1 root root 11939685 Sep 25 19:45 openGauss-3.1.0-CentOS-64bit-om.tar.gz
-rw-r--r--. 1 root root       65 Sep 25 19:45 openGauss-3.1.0-CentOS-64bit-om.sha256

三、编译CM

1. 编译Cmake

  • 安装依赖包
[root@node1 script]# yum install gcc-c++
  • 下载Cmake
[root@node1 ~]# wget https://github.com/Kitware/CMake/releases/download/v3.14.1/cmake-3.14.1.tar.gz
100%[==================================================================================================>] 8,849,712   5.19MB/s   in 1.6s
2022-09-25 19:52:02 (5.19 MB/s) - ‘cmake-3.14.1.tar.gz’ saved [8849712/8849712]
[root@node1 ~]# tar xvf cmake-3.14.1.tar.gz && cd cmake-3.14.1/
[root@node1 ~]# ./bootstrap && gmake && gmake install
[root@node1 ~]# /usr/local/bin/cmake --version
[root@node1 ~]# ln -s /usr/local/bin/cmake /usr/bin/

2. clone 代码

[root@node1 ~]# git clone https://gitee.com/opengauss/CM.git
Cloning into 'CM'...
remote: Enumerating objects: 809, done.
remote: Counting objects: 100% (809/809), done.
remote: Compressing objects: 100% (545/545), done.
remote: Total 809 (delta 379), reused 605 (delta 246), pack-reused 0
Receiving objects: 100% (809/809), 1.14 MiB | 0 bytes/s, done.
Resolving deltas: 100% (379/379), done.

3. 帮助

[root@node1 CM]# sh build.sh --help
/root/CM/build/build.sh [-m {release|debug|memcheck|cov}] [-3rd ${THIRD_BINARY_PATH}] [-o ${OUTPUT_PATH}] [--pkg] [--single]
        default: /root/CM/build/build.sh -m release -3rd "/root/CM/binarylibs" -o "/root/CM/output"

4. 编译

[root@node1 CM]# sh build.sh -m release -3rd "/root/binarylibs" --pkg
gcc set to 3rd path:[/root/binarylibs/buildtools/gcc7.3/]!
We well get dcc lib from 3rd[/root/binarylibs/kernel/component/dcc].
clean dcc libs[/root/CM/common_lib/dcc/]
********************************************************************
start build CM with <release>
    project_root_path=[/root/CM]
    3rd=[/root/binarylibs]
    gcc=[7.3]
    pkg=[yes]
    etcd=[OFF]
    hotpatch=[OFF]
    libpq=[ON]
    krb=[OFF]
    multiple_nodes=[OFF]
    cmake_def=[-DCMAKE_INSTALL_PREFIX=/root/CM/output -DENABLE_PRIVATEGAUSS=OFF -DCMAKE_BUILD_TYPE=Release  -DENABLE_MULTIPLE_NODES=OFF -DENABLE_ETCD=OFF -DENABLE_HOTPATCH=OFF -DENABLE_LIBPQ=ON -DENABLE_KRB=OFF -DENABLE_ALARM=ON]
    tmp_build_dir=[/root/CM/dist]
    pkg_name=[Package_ddes_cm_release.tar.gz]
    output to [/root/CM/output].
...
-- Installing: /root/CM/output/bin/cm_ctl
-- Installing: /root/CM/output/bin/om_monitor
-- Installing: /root/CM/output/bin/cm_server
-- Installing: /root/CM/output/share/config/cm_server.conf.sample
alarmConfig.conf is a config file, do not separate symbol
alarmItem.conf is a config file, do not separate symbol
Seperate debug symbol from cm_agent to /root/CM/output/symbols/bin/cm_agent.symbol ..... OK
Seperate debug symbol from cm_ctl to /root/CM/output/symbols/bin/cm_ctl00.symbol ..... OK
Seperate debug symbol from cm_server to /root/CM/output/symbols/bin/cm_server000.symbol ..... OK
Seperate debug symbol from om_monitor to /root/CM/output/symbols/bin/om_monitor00.symbol ..... OK
libcjson.so is a link, do not separate symbol!
libcjson.so.1 is a link, do not separate symbol!
Seperate debug symbol from libcjson.so.1.7.15 to /root/CM/output/symbols/lib/libcjson.so.1.7.1500.symbol ..... OK
libcrypto.so is a link, do not separate symbol!
Seperate debug symbol from libcrypto.so.1.1 to /root/CM/output/symbols/lib/libcrypto.so.1.1.symbol ..... OK
Seperate debug symbol from libdcc_driver.so to /root/CM/output/symbols/lib/libdcc_driver.so.symbol ..... OK
Seperate debug symbol from libdcc.so to /root/CM/output/symbols/lib/libdcc.so000.symbol ..... OK
Seperate debug symbol from libdcf.so to /root/CM/output/symbols/lib/libdcf.so000.symbol ..... OK
Seperate debug symbol from libgstor.so to /root/CM/output/symbols/lib/libgstor.so0.symbol ..... OK
Seperate debug symbol from liblz4.so to /root/CM/output/symbols/lib/liblz4.so000.symbol ..... OK
Seperate debug symbol from liblz4.so.1 to /root/CM/output/symbols/lib/liblz4.so.10.symbol ..... OK
Seperate debug symbol from liblz4.so.1.9.3 to /root/CM/output/symbols/lib/liblz4.so.1.9.30.symbol ..... OK
libssl.so is a link, do not separate symbol!
Seperate debug symbol from libssl.so.1.1 to /root/CM/output/symbols/lib/libssl.so.1.1000.symbol ..... OK
libz.so is a link, do not separate symbol!
libz.so.1 is a link, do not separate symbol!
Seperate debug symbol from libz.so.1.2.12 to /root/CM/output/symbols/lib/libz.so.1.2.1200.symbol ..... OK
libzstd.so is a link, do not separate symbol!
libzstd.so.1 is a link, do not separate symbol!
Seperate debug symbol from libzstd.so.1.5.2 to /root/CM/output/symbols/lib/libzstd.so.1.5.2.symbol ..... OK
pkg cm start
ALL SUCCESS!!!!

5. 查看文件

[root@node1 CM]# ls -lrt output/
total 26728
-rw-r--r--. 1 root root  6370191 Sep 25 20:03 Package_ddes_cm.tar.gz
-rw-r--r--. 1 root root 20993040 Sep 25 20:03 Symbols_ddes_cm.tar.gz

总结


文中所获得的安装包打包在一起即可获得最新版本的安装包

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
关系型数据库 MySQL Java
解决在ideal中导入MySql包,文件夹里面下载的有。但在ideal中无法引用的问题
解决在ideal中导入MySql包,文件夹里面下载的有。但在ideal中无法引用的问题
69 0
|
分布式计算 资源调度 Hadoop
十二、Spark的安装与部署详情(Local模式,Standalone模式,Spank on YARN模式)
十二、Spark的安装与部署详情(Local模式,Standalone模式,Spank on YARN模式)
十二、Spark的安装与部署详情(Local模式,Standalone模式,Spank on YARN模式)
|
6月前
|
Unix Linux 程序员
ClickHouse【环境搭建 01】Linux环境单机版在线安装 Code:210.DB::NetException + Init script is already running 问题处理
ClickHouse【环境搭建 01】Linux环境单机版在线安装 Code:210.DB::NetException + Init script is already running 问题处理
205 0
|
分布式计算 Hadoop
《A Con&nuously Deployed Hadoop Analy&cs pla2orm》电子版地址
A Con&nuously Deployed Hadoop Analy&cs pla2orm
72 0
《A Con&nuously Deployed Hadoop Analy&cs pla2orm》电子版地址
|
SQL 数据库
03-PDI(Kettle)导入与导出CDC(下)
文章目录 03-PDI(Kettle)导入与导出CDC 数据的全量、增量、差异备份 基于时间戳的源数据CDC 实验原理 实验步骤 基于触发器的CDC 实验原理
03-PDI(Kettle)导入与导出CDC(下)
|
SQL 存储 安全
03-PDI(Kettle)导入与导出CDC(上)
文章目录 03-PDI(Kettle)导入与导出CDC 数据的全量、增量、差异备份 基于时间戳的源数据CDC 实验原理 实验步骤 基于触发器的CDC 实验原理
03-PDI(Kettle)导入与导出CDC(上)
|
SQL 关系型数据库 MySQL
03-PDI(Kettle)导入与导出CDC(中)
文章目录 03-PDI(Kettle)导入与导出CDC 数据的全量、增量、差异备份 基于时间戳的源数据CDC 实验原理 实验步骤 基于触发器的CDC 实验原理
03-PDI(Kettle)导入与导出CDC(中)
|
存储 XML 缓存
01-PDI(Kettle)简介与安装
文章目录 01-PDI(Kettle)简介与安装 PDI(Kettle)简介 Kettle安装 Kettle核心知识点
01-PDI(Kettle)简介与安装
|
资源调度 Ubuntu Unix
05-PDI(Kettle)脚本执行
文章目录 05-PDI(Kettle)脚本执行 pan和kitchen实验背景 pan命令演示
05-PDI(Kettle)脚本执行
|
监控 调度 数据安全/隐私保护
04-PDI(Kettle)job案例
文章目录 04-PDI(Kettle)job案例 job简介 job创建案例 1.创建空作业
04-PDI(Kettle)job案例