构建MySQL Shell 8.0.32 for GreatSQL
0. 写在前面
之前已经写过一篇前传 MySQL Shell 8.0.32 for GreatSQL编译安装,最近再次编译MySQL Shell二进制包时,发现了一些新问题,因此重新整理更新本文档。
1. 几处新问题
这次编译MySQL Shell发现几个新问题,下面一一列举。
MySQL Shell要求配套的antlr4版本必须是4.10.0,配套的protobuf必须是3.19.4,其他版本都不行。
部分包需要科学上网才能下载,有些环境下就没那么方便了,因此我都下载到本地并打包好了。
在编译antlr4时还要再下载googletest依赖包,这个下载地址也是要科学上网的,在内网环境中会失败,因此我antlr4源码包微调了下,把googletest依赖包也打进去了,也可以通过微调代码略过该步骤,这样就可以避免编译问题。
针对这些情况,为了方便社区用户,我直接将整个二进制包编译工作打包成Docker镜像,有需要的直接拉取镜像创建容器,只需耐心等上几分钟即可得到MySQL Shell for GreatSQL二进制包了。
使用方法很简单,类似下面这样即可:
# 前面略过Docker的安装过程
# 直接拉取镜像并创建新容器
$ docker run -itd --hostname greatsqlsh --name greatsqlsh greatsql/greatsql_shell_build bash
# 查看容器日志,大概要等几分钟才能编译完成,取决于服务器性能
# 如果看到类似下面的结果,就表明二进制包已编译完成
$ docker logs greatsqlsh | tail
1. extracting tarballs
2. compiling antlr4
3. compiling antlr4
4. compiling rpcsvc-proto
5. compiling protobuf
6. compiling greatsql shell
/opt/greatsql-shell-8.0.32-25-centos-glibc2.28-x86_64/bin/mysqlsh Ver 8.0.32 for Linux on x86_64 - for MySQL 8.0.32 (Source distribution)
7. MySQL Shell 8.0.32-25 for GreatSQL build completed! TARBALL is:
-rw-r--r-- 1 root root 20343832 Jan 20 21:41 greatsql-shell-8.0.32-25-centos-glibc2.28-x86_64.tar.xz
接下来回退到宿主机,将容器中的二进制包拷贝出来
$ docker cp greatsqlsh:/opt/greatsql-shell-8.0.32-25-centos-glibc2.28-x86_64.tar.xz /usr/local/
然后解