centos7编译安装go1.9.3


原本是要编译Kubernetes包的,但是由于Kubernetes 1.9.0需要go1.9.1以后,而默认在Yum里安装的只有go1.8.3 ,然而golang1.5以后实现了自编译,也就是用golang开发golang。因此在安装新版本的golang时需要先安装一个golang1.4版本。

kubernetes报的版本问题:

  1. Detected go version: go version go1.8.3 linux/amd64. 
  2. Kubernetes requires go1.9.1 or greater. 
  3. Please install go1.9.1 or later. 

直接编译go1.9.3版 本又提示:

  1. [root@buildpackage src]# ./make.bash   
  2. ##### Building Go bootstrap tool.  
  3. cmd/dist  
  4. ERROR: Cannot find /root/go1.4/bin/go.  
  5. Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.  

 

我直接就安装了一个go1.4.2.linux-amd64.tar.gz版本:

下载地址,如果能够在墙外下载就最好直接下载:

https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz

1.9.3 版本:直接不用麻烦编译;

https://storage.googleapis.com/golang/go1.9.3.linux-amd64.tar.gz

因为中午下载不了,所以在github下载go-go1.9.3.tar.gz的源码:

https://github.com/golang/go/releases

 

首先把原来的go1.8.3卸载了,再解压上面下载的1.4版的并配置好环境变量:

 

  1. tar xf go1.4.2.linux-amd64.tar.gz 
  2.  
  3. vim ~/.bash_profile 
  4. GOROOT_BOOTSTRAP=/root/go 
  5. PATH=$PATH:$HOME/bin:$GOROOT_BOOTSTRAP/bin 

检查一下版本:

  1. [root@buildpackage ~]# go version 
  2. go version go1.4.2 linux/amd64 

其实我并不是想要1.4.2的版本,只是用它来编译一下1.9.3的版本。

首先避免出错,安装一些依赖,编译包:

  1. yum install golang gcc-go gcc glibc-devel -y 

接下来解压github下载回来的go-go1.9.3.tar.gz,并使用go1.4.2来编译它。

  1. tar xf go-go1.9.3.tar.gz 
  2. cd /root/go-go1.9.3/src 
  3. ./all.bash 
  4.  
  5. 完成后有如下提示: 
  6. --- 
  7. Installed Go for linux/amd64 in /root/go-go1.9.3 
  8. Installed commands in /root/go-go1.9.3/bin 
  9. *** You need to add /root/go-go1.9.3/bin to your PATH. 

现在不需要1.4.2的版本了,直接把之前的环境变量改成1.9.3的路径即可。

  1. [root@buildpackage ~]# go version 
  2. go version go1.9.3 linux/amd64 

接下来就可以再执行编译kubernetes了。