编译CockroachDB比较麻烦,尤其是从git下载代码编译还需要关联项目的下载,本文整理从官网下载代码的编译过程,非常简单,几乎没有异常,供大家参考。
编译CockroachDB 21.2
1、安装Centos 8.5 虚拟机
- 服务器类型选择Server,在软件包集合中选中“Performance Tools”和“Development Tools”
- 设置网络并启动网络时间服务
- 设置ISO文件为软件源
- 简化安全选项:关闭和禁用firewalld服务,禁用selinux
2、准备开发环境
2.1、安装go开发环境
从go官网 https://golang.google.cn/dl/ 下载最新go版本 1.17.3
tar -xf tools/go1.17.3.linux-amd64.tar.gz -C .
编辑 .bash_profile 设置环境变量
export GOROOT=$HOME/go export GOBIN=$HOME/go/bin export GOPATH=$HOME/works export PATH=$HOME/works/src/github.com/cockroachdb/cockroach/:$GOBIN:$PATH export GOPROXY=https://goproxy.io,direct export GOARCH=amd64 export CGO_ENABLED=1
执行source .bash_profile后验证
$ go version go version go1.17.3 linux/amd64
2.2、安装go 调试工具
下载对应go 1.17的delve工具
2.3、安装nodejs和yarn
cockroachdb自带http服务,编译时需要nodejs和yarn,ISO中带有NodeJs,也可以从镜像站点下载最新版本并安装
http://pub.mirrors.aliyun.com/centos/8/AppStream/x86_64/os/Packages/nodejs-full-i18n-16.8.0-1.module_el8.5.0%2B999%2Bc0bf7004.x86_64.rpm http://pub.mirrors.aliyun.com/centos/8/AppStream/x86_64/os/Packages/nodejs-docs-16.8.0-1.module_el8.5.0%2B999%2Bc0bf7004.noarch.rpm http://pub.mirrors.aliyun.com/centos/8/AppStream/x86_64/os/Packages/nodejs-16.8.0-1.module_el8.5.0%2B999%2Bc0bf7004.x86_64.rpm http://pub.mirrors.aliyun.com/centos/8/AppStream/x86_64/os/Packages/npm-7.21.0-1.16.8.0.1.module_el8.5.0%2B999%2Bc0bf7004.x86_64.rpm
验证
$node --version v16.8.0 $npm --version 7.21.0
设置代理
$npm config set registry http://registry.npm.taobao.org/
验证
$npm get registry http://registry.npm.taobao.org/
安装yarn
$npm install -g yarn
安装
$yarn --version 1.22.17
设置yarn代理
$yarn config set registry http://registry.npm.taobao.org/
验证
$yarn config get registry http://registry.npm.taobao.org/
2.4、安装其他依赖库
yum install cmake ncurses-devel -y
3、编译cockroachdb源码
3.1、准备源码
为了避免从github下载各种依赖包的麻烦,采用从官网下载源码编译
https://binaries.cockroachdb.com/cockroach-v21.2.0.src.tgz
tar -xf ~/tools/cockroach-v21.2.0.src.tgz -C ~/works/ cd works mv cockroach-v21.2.0/* . rm cockroach-v21.2.0 -rf
3.2、编译
cockroach-v21.2.0 首次编译时不会编译ui,最简单的方式就touch ui下的随便一个文件就好
cd src/github.com/cockroachdb/cockroach touch pkg/ui/workspaces/db-console/src/app.tsx 然后编译 make build
简单验证
$cockroach version Build Tag: v21.2.0 Build Time: 2021/11/21 07:09:43 Distribution: CCL Platform: linux amd64 (x86_64-redhat-linux) Go Version: go1.17.3 C Compiler: gcc 8.5.0 20210514 (Red Hat 8.5.0-3) Build Commit ID: 79e5979416cb426092a83beff0be1c20aebf84c6 Build Type: development
单元测试
make test
在编译的最后生成文档节点会报:fatal: not a git repository (or any of the parent directories): .git
在单元测试中有几个用例会报错,也是git原因,还有就是作者邮箱不匹配,都可忽略,放心下一步探索即可。