編譯CockroachDB比較麻煩,尤其是從git下載代碼編譯還需要關聯項目的下載,本文整理從官網下載代碼的編譯過程,非常簡單,幾乎沒有異常,供大家參考。
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,也可以從鏡像站點下載最新版本並安裝,如:
https://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/Packages/nodejs-16.8.0-1.module_el8.6.0+928+039f010b.x86_64.rpm https://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/Packages/nodejs-docs-16.8.0-1.module_el8.6.0+928+039f010b.noarch.rpm https://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/Packages/nodejs-full-i18n-16.8.0-1.module_el8.6.0+928+039f010b.x86_64.rpm https://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/Packages/npm-7.21.0-1.16.8.0.1.module_el8.6.0+928+039f010b.x86_64.rpm
注:如果下載404失敗,一般是版本更新了,打開網頁 https://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/Packages/,更正鏈接即可
驗證
$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原因,還有就是作者郵箱不匹配,都可忽略,放心下一步探索即可。