解决升级go版本遇到的Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.问题
环境
macbook pro
MACOS X 10.11
Go版本1.4
该问题适用场景1.6版本-1.8版本的go代码编译
问题描述
按照go按照指南在go根目录/src下执行
./all.bash
遇到
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.错误,升级失败
问题提示分析
编译GO 1.6版本以上的需要依赖GO 1.4版本的二进制,并且需要把GOROOT_BOOTSTRAP的路径设置为1.4版本GO的根目录,这样它的bin目录就可以直接使用到1.4版本的GO
解决方案
先编译go1.4版本,设置好GOROOT_BOOTSTRAP,然后再执行脚本编译安装GO1.6以上版本
具体步骤
1.如果之前已经安装过老版本的Go,清除GOPATH,GOROOT变量。
unset GOPATH
unset GOROOT
2.获取1.4GO源代码,这里以Git获取为例
git clone git@github.com:golang/go.git
cd go
git checkout -b 1.4.3 go1.4.3
cd src
./all.bash
复制 ~/go 下的文件到 $GOROOT_BOOTSTRAP(默认值是~/go1.4)—-如果采用这种方式,GOROOT_BOOTSTRAP适用另一个路径,免得与新版本GO冲突
记得设置GOROOT为代码目录
3.获取最新版本的GO版本
还是不要获取了。。。因为你不知道版本号,会遇到该问题(即因为go-master分支是没有VERSION文件,故会有问题,需要选择发行版进行编译)
go tool dist: FAILED: not a Git repo; must put a VERSION file in $GOROOT
4.编译新版GO源码
cd ~/go
git clean -dfx
git checkout -b 1.8 go1.8
cd src
./all.bash
即可等待编译完成
ALL TESTS PASSED
字样表示编译安装OK
编译完成后,设置 $GOPATH 以及添加Go二进制路径到 $PATH
5.配置好之后,使用go version命令查看版本是否正确
feiqianyousadeMacBook-Pro:Downloads yousa$ go version
go version go1.8 darwin/amd64