在CentOS环境下编译GreatSQL RPM包

这篇具有很好参考价值的文章主要介绍了在CentOS环境下编译GreatSQL RPM包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文介绍如何在CentOS环境下编译GreatSQL RPM包。

运行环境是docker中的CentOS 8 x86_64:

$ docker -v
Docker version 20.10.10, build b485636

$ docker run -itd --hostname c8 --name c8 centos bash
a0a2128591335ef41e6faf46b7e79953c097500e9f033733c3ab37f915b69439

$ docker exec -it c8 bash

1、准备工作

1.1、配置yum源

开始编译之前,需要先配置好yum源,方便安装一些辅助工具。

在这里采用阿里云的yum源:

[root@c8 /]# rm -f /etc/yum.repos.d/* && \
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && \
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo && \
yum clean all && yum makecache

1.2、安装编译所需要的软件包

安装 rmp-build 包,它会附带安装其他必要的相关依赖包:

[root@c8 /]# dnf install -y rpm-build

1.3 创建构建RPM包所需的目录

创建相应的目录

[root@c8 /]# mkdir -p /root/rpmbuild/SOURCES

1.4 下载GreatSQL源码包

戳此链接 https://gitee.com/GreatSQL/GreatSQL/releases/tag/GreatSQL-8.0.32-25,找到 greatsql-8.0.32-25.tar.xz 下载GreatSQL源码包,放在上面创建的 /root/rpmbuild/SOURCES 目录下,并解压缩。

1.5 下载greatsql.spec文件

戳此链接 https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/build-gs/greatsql.spec,下载 greatsql.spec 文件,放在上面创建的 /root/rpmbuild/ 目录下。

1.6 下载boost源码包

编译GreatSQL 8.0.32-25版本需要配套的boost版本是1.77,戳此链接下载 https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.gz,放在上面创建的 /root/rpmbuild/SOURCES 目录下。

1.7 下载rpcsvc-proto包并编译安装

编译GreatSQL需要配套rpcsvc-proto包,戳此链接下载 https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz,放在 /tmp/ 目录下。

2、开始准备编译GreatSQL RPM包

从GreatSQL源码包中拷贝几个必要的文件

[root@c8 /]# cd /root/rpmbuild/SOURCES/greatsql-8.0.32-25/build-gs/rpm
[root@c8 rpm]# cp filter-*sh mysqld.cnf mysql-5.7-sharedlib-rename.patch mysql.init mysql_config.sh /root/rpmbuild/SOURCES/

修改 greatsql.spec 文件中的部分内容:

[root@c8 rpm]# vim /root/rpmbuild/greatsql.spec
...
%global greatsql_version 25
%global revision db07cc5cb73
...
SOURCE0:        greatsql-8.0.32-25.tar.xz
...
SOURCE10:       boost_1_77_0.tar.gz
...
%changelog
* Fri Dec 29 2023 GreatSQL <greatsql@greatdb.com> - 8.0.32-25.1
- Release GreatSQL-8.0.32-25.1

* Wed Jun  7 2023 GreatSQL <greatsql@greatdb.com> - 8.0.32-24.1
- Release GreatSQL-8.0.32-24.1
...

开始尝试编译RPM包

[root@c8 rpm]#  cd /root/rpmbuild
[root@c8 rpmbuild]# rpmbuild --nodebuginfo --define "_smp_mflags -j14" --define 'dist .el8' --define "_topdir /root/rpmbuild/" -bb ./greatsql.spec

在使用 rpmbuild 编译RPM包时,通常会选择加上 -ba-bb 参数,下面是关于这两个参数的注释:

-ba    Build binary and source packages (after doing the %prep, %build, and %install stages).

-bb    Build a binary package (after doing the %prep, %build, and %install stages).

简单说,-ba 会编译出RPM包和SRPM包,而 -bb 只会编译出RPM包。

第一次运行时,大概率会提示N多依赖包缺失,先耐心地逐个安装上:

[root@c8 rpmbuild]# rpmbuild --nodebuginfo --define "_smp_mflags -j14" --define 'dist .el8' --define "_topdir /root/rpmbuild/" -bb ./greatsql.spec
...
warning: Macro expanded in comment on line 787: %{_mandir}/man1/mysql.server.1*

warning: Macro expanded in comment on line 956: %{_datadir}/mysql-*/audit_log_filter_linux_install.sql
...
warning: bogus date in %changelog: Wed Jun  6 2022 GreatSQL <greatsql@greatdb.com> - 8.0.25-16.1
error: Failed build dependencies:
        bison is needed by greatsql-8.0.32-25.1.el8.x86_64
        cmake >= 2.8.2 is needed by greatsql-8.0.32-25.1.el8.x86_64
        cmake >= 3.6.1 is needed by greatsql-8.0.32-25.1.el8.x86_64
...
        zlib-devel is needed by greatsql-8.0.32-25.1.el8.x86_64
        

这里贴一下我用上述干净docker环境中安装的一些依赖包:

[root@c8 rpmbuild]# dnf install -y  bison cmake cyrus-sasl-devel gcc-c++ gcc-toolset-11 gcc-toolset-11-annobin-plugin-gcc yum krb5-devel 1libaio-devel libcurl-devel libtirpc-devel m4 make ncurses-devel numactl-devel openldap-devel openssl openssl-devel pam-devel perl perl-Carp perl-Data-Dumper perl-Errno perl-Exporter perl-File-Temp perl-Getopt-Long perl-JSON perl-Memoize perl-Time-HiRes readline-devel time zlib-devel

由于安装了 gcc-toolset-11 包,需要执行下面的命令才能切换到 gcc11 版本环境中,并确认gcc、cmake的版本是否符合要求:

[root@c8 rpmbuild]# source /opt/rh/gcc-toolset-11/enable
[root@c8 rpmbuild]# gcc --version
gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@c8 rpmbuild]# cmake --version
cmake version 3.20.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

还需要编译安装rpcsvc-proto依赖包

[root@c8 rpmbuild]# cd /tmp/
[root@c8 tmp]# tar xf rpcsvc-proto-1.4.tar.gz
[root@c8 tmp]# cd rpcsvc-proto-1.4
[root@c8 rpcsvc-proto-1.4]# ./configure && make && make install
...
make[2]: Leaving directory '/tmp/rpcsvc-proto-1.4'
make[1]: Leaving directory '/tmp/rpcsvc-proto-1.4'

安装完这些依赖包后,再次开始尝试编译RPM包。

[root@c8 rpcsvc-proto-1.4]# cd /root/rpmbuild/
# 将编译过程输出到日志文件中,更方便观察的排查错误
[root@c8 rpmbuild]# rpmbuild --nodebuginfo --define "_smp_mflags -j14" --define 'dist .el8' --define "_topdir /root/rpmbuild/" -bb ./greatsql.spec > ./rpmbuild.log 2>&1
warning: Macro expanded in comment on line 787: %{_mandir}/man1/mysql.server.1*

warning: Macro expanded in comment on line 956: %{_datadir}/mysql-*/audit_log_filter_linux_install.sql
...
warning: bogus date in %changelog: Wed Jun  6 2022 GreatSQL <greatsql@greatdb.com> - 8.0.25-16.1
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.jOIUMM
+ umask 022
+ cd /root/rpmbuild//BUILD
+ cd /root/rpmbuild/BUILD
+ rm -rf greatsql-8.0.32-25
...

如果编译失败了,会有类似这样的结果:

    bogus date in %changelog: Wed Jun  6 2022 GreatSQL <greatsql@greatdb.com> - 8.0.25-16.1
    Bad exit status from /var/tmp/rpm-tmp.k8RLOL (%build)

只需打开 /root/rpmbuild/rpmbuild.log 文件,搜索 error/fail 等关键字(不区分大小写)应该就能分析出错误原因了。

解决完错误原因,再一次重试编译,这次应该顺利了,耐心等着吧。在这过程中,我们还可以通过观察 /root/rpmbuild/rpmbuild.log 文件了解编译的进度情况,例如下面这样,可见进度大约到了91%,胜利在望 ~

...
[ 91%] Building CXX object sql/CMakeFiles/binlog.dir/changestreams/misc/column_filters/column_filter_outbound_func_indexes.cc.o
...

编译GreatSQL RPM包的过程中要做两遍,一次编译出release包,一次编译出debug包,所以会有一点点费时,正好泡杯好茶安心喝着就是了。

最后,查看编译结果,会有类似下面的日志:

[root@c8 rpmbuild]# tail rpmbuild.log
Wrote: /root/rpmbuild/RPMS/x86_64/greatsql-client-debuginfo-8.0.32-25.1.el8.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/greatsql-test-debuginfo-8.0.32-25.1.el8.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/greatsql-shared-debuginfo-8.0.32-25.1.el8.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/greatsql-mysql-router-debuginfo-8.0.32-25.1.el8.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.Z174QT
+ umask 022
+ cd /root/rpmbuild//BUILD
+ cd greatsql-8.0.32-25
+ /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/greatsql-8.0.32-25.1.el8.x86_64
+ exit 0

再看下编译生成的RPM文件包:

[root@c8 rpmbuild]# du -sch *
45G     BUILD        #编译工作目录,产生大量编译文件,所以特别大,可以清空
0       BUILDROOT
976M    RPMS        #编译产生的RPM包
1.8G    SOURCES
0       SPECS
0       SRPMS
37M     rpmbuild.log
64K     greatsql.spec
47G     total

[root@c8 rpmbuild]# cd /root/rpmbuild/RPMS/x86_64
[root@c8 x86_64]# ls -la
total 998740
drwxr-xr-x 2 root root      4096 Dec 29 10:27 .
drwxr-xr-x 3 root root        20 Dec 29 10:21 ..
-rw-r--r-- 1 root root  19061972 Dec 29 10:22 greatsql-client-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root  36091240 Dec 29 10:27 greatsql-client-debuginfo-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root   4591912 Dec 29 10:25 greatsql-debuginfo-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root  26174384 Dec 29 10:25 greatsql-debugsource-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root   2241908 Dec 29 10:24 greatsql-devel-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root   2145368 Dec 29 10:24 greatsql-icu-data-files-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root      8100 Dec 29 10:24 greatsql-mysql-config-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root   5259796 Dec 29 10:24 greatsql-mysql-router-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root  37427440 Dec 29 10:28 greatsql-mysql-router-debuginfo-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root  78317640 Dec 29 10:22 greatsql-server-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root 379119548 Dec 29 10:27 greatsql-server-debuginfo-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root   1502984 Dec 29 10:24 greatsql-shared-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root   2805716 Dec 29 10:27 greatsql-shared-debuginfo-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root 409911420 Dec 29 10:24 greatsql-test-8.0.32-25.1.el8.x86_64.rpm
-rw-r--r-- 1 root root  18017572 Dec 29 10:27 greatsql-test-debuginfo-8.0.32-25.1.el8.x86_64.rpm

大功告成。

3、安装GreatSQL

将编译产生的RPM包文件拷贝到另外一个全新的docker CentOS 8环境下,测试安装是否顺利。下面略过拷贝文件以及新docker镜像环境初始化过程,直接开始安装:

[root@cc8 cc8]# rpm -ivh *rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:greatsql-shared-8.0.32-25.1.el8  ################################# [ 13%]
   2:greatsql-client-8.0.32-25.1.el8  ################################# [ 25%]
   3:greatsql-icu-data-files-8.0.32-25################################# [ 38%]
   4:greatsql-server-8.0.32-25.1.el8  ################################# [ 50%]
   5:greatsql-test-8.0.32-25.1.el8    ################################# [ 63%]
   6:greatsql-mysql-router-8.0.32-25.1################################# [ 75%]
   7:greatsql-mysql-config-8.0.32-25.1################################# [ 88%]
   8:greatsql-devel-8.0.32-25.1.el8   ################################# [100%]

看起来一切都很顺利,成功搞定。

延伸阅读

  • 玩转MySQL 8.0源码编译
  • 将GreatSQL添加到系统systemd服务
  • 利用GreatSQL部署MGR集群
  • InnoDB Cluster+GreatSQL部署MGR集群
  • 在Docker中部署GreatSQL并构建MGR集群

全文完。

Enjoy GreatSQL 😃


Enjoy GreatSQL 😃

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

在CentOS环境下编译GreatSQL RPM包

技术交流群:

微信:扫码添加GreatSQL社区助手微信好友,发送验证信息加群

在CentOS环境下编译GreatSQL RPM包文章来源地址https://www.toymoban.com/news/detail-778120.html

到了这里,关于在CentOS环境下编译GreatSQL RPM包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Jenkins】Centos环境安装Jenkins(通过rpm安装)

    在Centos操作系统中通过rpm安装Jenkins 参考官网 https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos 下载安装 验证Java安装 配置使用的仓库 安装jenkins 启动Jenkins服务 首次启动时,会自动创一个管理员账号,通过如下指令查看管理员密码 Jenkins启动默认端口8080,可以通过如下指令临

    2024年02月04日
    浏览(44)
  • 全网独家:编译CentOS6.10系统的openssl-1.1.1多版本并存的rpm安装包

    CentOS6.10系统原生的openssl版本太老,1.0.1e,不能满足一些新版本应用软件的要求,但是它又被wget、mysql-libs、python-2.6.6、yum等一众系统包所依赖,不能再做升级。故需考虑在不影响系统原生openssl的情况下,安装较新版的openssl形成多版本并存,本文采用编译rpm包的方式完成了可

    2024年02月09日
    浏览(48)
  • 编译GreatSQL with RocksDB引擎

    GreatSQL里也能用上RocksDB引擎 RocksDB 是基于Facebook 开源的一种支持事务的、高度可压缩、高性能的MyRocks存储引擎,特别适用于高度压缩和大容量的数据。以下是一些关键特点: 高性能: LSM 树结构使得RocksDB在写入密集型负载下表现卓越。它能够处理大量的写入操作,并且在写

    2024年03月13日
    浏览(62)
  • ffmpeg 编译android mac环境编译 或者centos

    ndk版本:ndk21 (可使用android studio内部下载的ndk) /Users/XXXX/Library/Android/sdk/ndk/21.4.7075529 ffmpeg下载  ffmpeg6.0 1:git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg 2:或者直接点击下面按钮下载 http://ffmpeg.org/releases/ffmpeg-6.0.tar.xz 环境和资源都准备好了之后,接下来就是准备编译脚本。这里面说

    2024年02月09日
    浏览(59)
  • MySQL Shell 8.0.32 for GreatSQL编译安装

    0.写在前面 1.准备工作 1.1 准备Docker环境 1.2 下载源码包 1.3 修改MySQL Shell源码包 1.4 编译相关软件包 2.准备编译MySQL Shell 2.1 编译MySQL 8.0.32 2.2 编译MySQL Shell 8.0.32 2.3 运行测试 3.写在最后 延伸阅读 升级MySQL Shell for GreatSQL版本 GreatSQL 8.0.32-24已发布,配套的MySQL Shell也需要跟着升级一

    2024年02月11日
    浏览(60)
  • MySQL Shell 8.0.32 for GreatSQL编译二进制包

    构建MySQL Shell 8.0.32 for GreatSQL 之前已经写过一篇前传 MySQL Shell 8.0.32 for GreatSQL编译安装,最近再次编译MySQL Shell二进制包时,发现了一些新问题,因此重新整理更新本文档。 这次编译MySQL Shell发现几个新问题,下面一一列举。 MySQL Shell要求配套的antlr4版本必须是4.10.0,配套的

    2024年02月19日
    浏览(57)
  • CentOS7环境编译python3.9版本pjsua

    环境:CentOS 7.6_x64    Python版本 :3.9.12 pjsip版本:2.13  pjsip地址:https://www.pjsip.org/ GitHub地址:https://github.com/pjsip/pjproject pjsip文档地址:https://docs.pjsip.org/en/latest/ 最新版本:2.13 pjsip是一个功能强大的sip协议栈和媒体处理库,MicroSIP软电话就是基于pjsip实现的,功能很强大。

    2024年02月08日
    浏览(73)
  • Linux 下编译和交叉编译FFmpeg、OpenCV(contrib )库

    目录 一、Linux下FFmpeg库的编译 1.1 yasm库 1.2 安装X264 1.3 安装FFmepg 1.4 实验 报错 二、Linux 下OpenCV库的编译 三、环境变量设置 四、FFmpeg Linux交叉编译 4.1 FFmpeg不依赖其他库编译 4.2 FFmpeg编译依赖库(如X264) 以上3部分验证过得,是正确的,第四步没验证 五、OpenCV的交叉编译 hkx@ubun

    2024年01月22日
    浏览(71)
  • QEMIU-基于CentOS7系统编译安装部署qemu 2.7.0 版本的环境

    【原文链接】QEMIU-基于CentOS系统编译安装部署QEMU环境 备份原有的yum源配置 设置阿里云的yum源 添加EPEL源 更新yum缓存 安装依赖包 下载qemuu并解压 编译安装 验证qemu 退出后重新登录,然后执行qemu- 加tag,即出现如下命令提示,表示qemu已经编译安装成功

    2024年02月15日
    浏览(45)
  • Windows环境下编译OpenOCD

    1、安装git for windows sdk 下载地址:Git for Windows  ps:如果安装失败,需要将安装目录删除后才能重新安装。 2、打开 Git SDK 64-bit,安装编译所需环境 pacman -S mingw-w64-x86_64-toolchain git make libtool pkg-config autoconf automake texinfo wget 此处直接按回车  此处按Y,按回车  显示安装成功,如

    2024年02月13日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包