封尘网

让学习成为一种习惯!

centos7编译安装go1.9.3

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

kubernetes报的版本问题:

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

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

[root@buildpackage src]# ./make.bash   
##### Building Go bootstrap tool.  
cmd/dist  
ERROR: Cannot find /root/go1.4/bin/go.  
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版的并配置好环境变量:

tar xf go1.4.2.linux-amd64.tar.gz 

vim ~/.bash_profile 
GOROOT_BOOTSTRAP=/root/go 
PATH=$PATH:$HOME/bin:$GOROOT_BOOTSTRAP/bin

检查一下版本:

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

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

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

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

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

tar xf go-go1.9.3.tar.gz 
cd /root/go-go1.9.3/src 
./all.bash

完成后有如下提示:


Installed Go for linux/amd64 in /root/go-go1.9.3 
Installed commands in /root/go-go1.9.3/bin 
*** You need to add /root/go-go1.9.3/bin to your PATH.

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

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

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

提醒:本文最后更新于 2068 天前,文中所描述的信息可能已发生改变,请谨慎使用。