两个步骤,1.环境准备 2.编译安装
Envrionment Prepare
-
Install Homebrew. If your
/usr/local
directory is not empty and you haven't yet used Homebrew, you need to run the following command:sudo chown -R $(whoami):admin /usr/local
-
If Xcode is installed (with Console tools, which should be bundled
automatically since version 7.1), all the dev dependencies should be satisfied in this step. If Xcode isn't present, you'll need to install pkg-config.brew install pkg-config
Install etcd v3.0+. Remember to include
etcd
command on your path.-
Run the following commands:
brew install go ant automake libtool python git bison curl wget mysql57 pip install --upgrade pip setuptools pip install virtualenv pip install MySQL-python pip install tox
-
The Vitess bootstrap script makes some checks for the go runtime, so it is recommended to have the following commands in your
~/.profile
,~/.bashrc
,~/.zshrc
, or~/.bash_profile
:export PATH="/usr/local/opt/mysql@5.7/bin:$PATH" export PATH=/usr/local/go/bin:$PATH export GOROOT=/usr/local/go
-
For the Vitess hostname resolving functions to work correctly, a new entry has to be added into the /etc/hosts file with the current LAN IP address of the computer (preferably IPv4) and the current hostname, which you get by typing the 'hostname' command in the terminal.
It is also a good idea to put the following line to force the Go DNS resolver in your
~/.profile
or~/.bashrc
or~/.zshrc
:export GODEBUG=netdns=go
Build Vitess
-
Navigate to the directory where you want to download the Vitess source code and clone the Vitess Github repo. After doing so, navigate to the
src/vitess.io/vitess
directory.cd $WORKSPACE git clone https://github.com/vitessio/vitess.git \ src/vitess.io/vitess cd src/vitess.io/vitess
Set the
MYSQL_FLAVOR
:
# It is recommended to use MySQL56 even for MySQL 5.7 and 8.0. For MariaDB you can use MariaDB:
export MYSQL_FLAVOR=MySQL56
-
If your selected database installed in a location other than
/usr/bin
, set theVT_MYSQL_ROOT
variable to the root directory of your MySQL installation:# For generic tarballs on Linux export VT_MYSQL_ROOT=/usr/local/mysql # On macOS with Homebrew export VT_MYSQL_ROOT=/usr/local/opt/mysql@5.7
Note that the command indicates that the
mysql
executable should be found at/usr/local/opt/mysql@5.7/bin/mysql
. Run
mysqld --version
and confirm that you are running MySQL 5.7.-
Build Vitess using the commands below. Note that the
bootstrap.sh
script needs to download some dependencies. If your machine requires a proxy to access the Internet, you will need to set the usual environment variables (e.g.http_proxy
,https_proxy
,no_proxy
).Run the boostrap.sh script:
BUILD_TESTS=0 ./bootstrap.sh ### example output: # skipping zookeeper build # go install golang.org/x/tools/cmd/cover ... # Found MariaDB installation in ... # creating git pre-commit hooks # # source dev.env in your shell before building
# Remaining commands to build Vitess source ./dev.env make build
遇到的问题:
环境准备部分:
不用先下载etcd,后面执行bootstrap脚本会安装
-
brew install go ant automake libtool python git bison curl wget mysql57
先执行
brew install go ant automake libtool git bison curl wget
单独执行brew install mysql@57如果没有python,单独执行brew install python@2
-
pip install --user tox
报错:ERROR: matplotlib 1.3.1 requires nose, which is not installed.
ERROR: matplotlib 1.3.1 requires tornado, which is not installed.执行
pip install nose
pip install tornado
编译安装的问题:
- bootstrap.sh执行安装zookeeper时
compile-test:
[mkdir] Created dir: /Users/xiejinke1/Projects/gopath/dist/vt-zookeeper-3.4.14/zookeeper-3.4.14/build/test/classes
[javac] Compiling 170 source files to /Users/xiejinke1/Projects/gopath/dist/vt-zookeeper-3.4.14/zookeeper-3.4.14/build/test/classes
[javac] 警告: [options] 未与 -source 1.6 一起设置引导类路径
[javac] 注: 某些输入文件使用或覆盖了已过时的 API。
[javac] 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
[javac] 注: /Users/xiejinke1/Projects/gopath/dist/vt-zookeeper-3.4.14/zookeeper-3.4.14/zookeeper-server/src/test/java/org/apache/zookeeper/test/LoadFromLogNoServerTest.java使用了未经检查或不安全的操作。
[javac] 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
[javac] Compiling 11 source files to /Users/xiejinke1/Projects/gopath/dist/vt-zookeeper-3.4.14/zookeeper-3.4.14/build/test/classes
[javac] 警告: [options] 未与 -source 1.6 一起设置引导类路径
[javac] 注: /Users/xiejinke1/Projects/gopath/dist/vt-zookeeper-3.4.14/zookeeper-3.4.14/zookeeper-it/src/test/java/org/apache/zookeeper/test/system/InstanceContainer.java使用了未经检查或不安全的操作。
[javac] 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
本机配置JDK1.8版本,参考:https://www.jianshu.com/p/072981dc9cc2
- govendor sync时
Updating govendor dependencies...
# cd .; git clone https://github.com/aws/aws-sdk-go /Users/xiejinke1/Projects/gopath/.cache/govendor/github.com/aws/aws-sdk-go
正克隆到 '/Users/xiejinke1/Projects/gopath/.cache/govendor/github.com/aws/aws-sdk-go'...
error: RPC 失败。curl 18 transfer closed with outstanding read data remaining
fatal: 远端意外挂断了
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败
手动
git clone https://github.com/coreos/etcd $GOPATH/src/github.com
git clone https://github.com/aws/aws-sdk-go $GOPATH/src/github.com
git clone https://code.googlesource.com/google-api-go-client $GOPATH/src/google.golang.org/api
由于执行到这个步骤由于墙或者代码已经移动到github.com中,可以手动执行govendor sync -v 查看govendor在fetch什么,缺什么提前补充好。加快执行速度。
如果执行git clone 下载不下来,参考 https://www.jianshu.com/p/bb16ea7afdda 给git配置一个代理
有疑问加站长微信联系(非本文作者)