构建GO语言编译运行环境

前言

最近学习使用grafana的过程中,涉及到需要编译grafana源码的场景,因为grafana是使用go语言进行开发的,因为众所周知的原因,国内很多网站无法访问,导致编译起来比较累,本文主要总结一下如果在Windows和CentOS上进行go语言环境的搭建和配置。

Go资源下载

因为go的资源下载地址是google.com的二级域名,国内访问时,如果没有梯子时无法访问的,所以只能透过国内的站台进行下载安装。

这里我们可以根据我们的操作系统选择对应的安装包。

GO语言Windows编译环境构建

下载安装包

1
https://studygolang.com/dl/golang/go1.12.7.windows-amd64.msi

一路next,采用默认安装,安装时会自动在系统环境变量里新建一个名为GOROOT的环境变量,
这个变量的值和你go的安装路径一致。这里我们安装在C盘:

1
C:\Go

安装程序会自动将C:\Go\bin这个目录加入到系统环境变量的PATH属性上。

设置环境变量

go代码必须在工作空间内。工作空间是一个目录,其中包含三个子目录:

  • src里面每一个子目录,就是一个包。包内是go的源码文件
  • pkg编译后生成的,包的目标文件
  • bin生成的可执行文件。

安装完毕后我们需要手动添加一个名为GOPATH的环境变量,值为工作空间的路径,这里我新建了一个F:\go的文件夹作为工作空间。

接下来我们将go工作空间下的bin文件夹加入系统环境PATH变量中,

1
PATH=%PATH%;%GOPATH%\bin

验证命令

在cmd或powershell中输入$ go version,如果安装成功应该显示类似的提示信息。

GO语言CentOS编译环境构建

下载二进制包

1
2
3
wget https://studygolang.com/dl/golang/go1.12.7.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.12.7.linux-amd64.tar.gz
mkdir -p /home/gopath #GOPATH 路径, 需要编译的项目都应该放到该目录

配置环境变量

1
vi /etc/profile

在文件末尾增加以下两行:

1
2
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

在文件末尾增加以下一行信息,配置GOPATH路径。

1
export GOPATH=/home/gopath

执行以下代码,使配置生效:

1
source /etc/profile

查看Go的版本

1
2
$go version
go version go1.12.7 linux/amd64

Go Get无反应的解决方案

因为国内网络问题,执行go get经常会出现卡死不动的情况,比如我们在命令行执行以下代码,你会发现一只卡在那儿,其实我们的设置都没有问题,只是网络问题导致无法正常访问。

1
go get github.com/astaxie/beego

改HOSTS解决方法

如果有梯子,那我们可以设置proxy来跳过这个问题,但是如果没有的话,网上有童鞋该hosts文件也有成功的。

可以先使用IP查询工具查询,然后按以下方法更新。

1
2
3
vim /etc/hosts
140.82.113.3 github.com
151.101.185.194 github.global.ssl.fastly.net

然后重启系统,再执行我们的go get命令。

不过,我更新之后发现也是不行的,还是得下载离线包的方案来解决。

Git Clone方案

golang 在 github 上建立了一个镜像库,如 https://github.com/golang/net即是 https://golang.org/x/net 的镜像库。获取 golang.org/x/net 包,其实只需要以下步骤:

1
2
3
mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/net.git

其他的包也可以采用类似方案进行解决。

go get 代理设置

让go get用上http代理:临时使用

1
2
3
4
5
6
7
8
9
10
11
windows:在cmd中使用
//设置临时代理,关闭cmd取消设置
set http_proxy=http://localhost:1080
set https_proxy=http://localhost:1080
//取消代理设置
set http_proxy=
//查看代理设置
set http_proxy
linux:
export http_proxy=http://localhost:1080
export https_proxy=http://localhost:1080

使用git设置代理为

1
2
3
git config --global https.proxy "127.0.0.1:1080"
//查看为
git config --global https.proxy