最近在使用ubuntu20.04时,自带的go版本为go1.10,版本比较老导致无法有效使用,所以参考了网上各路大神的教程,自己总结了一份go环境安装。
1.查看go原来的安装位置
go env
在GOPATH这里可以看到我虚拟机里go的位置在/usr/lib,版本为1.10(下一步rm时要结合自己的具体版本)
然后将/usr/lib里原来的go版本删除掉
sudo rm -rf /usr/lib/go
sudo rm -rf /usr/lib/go-1.10
sudo apt-get remove golang
sudo apt-get remove golang-go
sudo apt-get autoremove
2.下载安装并设置环境变量
之后进入想要安装go的目录,仍以/usr/lib为例(也可以为/usr/local),在网上下载指定版本的go压缩包,或者可以用远程软件上传,以下载为例
cd /usr/lib
#wget 后面的下载链接请去golang官网(https://golang.google.cn/dl/)获取你想下载的对应go版本,以最新的1.20.5版本为例
sudo wget https://golang.google.cn/dl/go1.20.5.linux-amd64.tar.gz
# 解压
sudo tar -zxvf go1.20.5.linux-amd64.tar.gz
然后ls查看文件已存在
之后设置环境变量,将go加入到环境变量里
sudo vim /etc/profile
点击i
插入,在最后一行后面添加如下语句
export GOROOT=/usr/lib/go
export GOPATH=$HOME/gowork
export GOBIN=$GOPATH/bin
export PATH=$GOPATH:$GOBIN:$GOROOT/bin:$PATH
如图所示
然后点击Esc,输入:wq
保存并退出,并更新环境变量使之生效
source /etc/profile
但是这种方式只在本终端里生效,关闭终端后,重新打开环境变量又会失效,除了重新启动系统之外,可以在用户根目录的/.bashrc修改
sudo vim ~/.bashrc
在最后一行下添加
source /etc/profile
之后更新.bashrc文件
source ~/.bashrc
4.查看是否配置成功
go env
5.go mod的环境变量设置
GO111MODULE
go在1.1.1版本后才有moudle模式,因此起名111。
允许设置为以下参数:
go env -w GO111MODULE=on
auto:只要项目包含go.mod文件的话启用Go module。Go1.11-1.14的默认值。
on:启用Go module。目前(1.17)默认值。
off:禁用Go module。
GOPROXY
主要用于设置模块代理,可以通过设置的网站,快速拉取模块版本。第三方依赖库下载的源地址。默认值是:https://proxy.golang.org,direct(需要科学上网)
常见的国内代理有:
(1)阿里云:https://mirrors.aliyun.com/goproxy/
(2)七牛云:https://goproxy.cn,direct
go env -w GOPROXY=https://goproxy.cn,direct
添加direct的话,如果当前代理路径找不到,会到包所在的原路径找。
查看当前值:go env|grep GOPROXY
注意:
(1)设置的镜像地址GOPROXY,同时也会代理GOSUMDB的检查工作,因此可以不用重复设置GOSUMDB。
(2)对于有些通过https://goproxy.cn代理无法访问的网站,可能要配置虚拟机科学上网。
GOSUMDB
用于在拉取模块版本的时候,保证拉取到的数据未经过篡改。如果发现不一致,即可能发现篡改,将会立即终止。
默认值是:sum.golang.org(国内无法访问,需要科学上网)
查看当前值:
go env | grep GOSUMDB
如果不希望校验,可以将该值改为off
该值能够被Go模块代理所代理,因此我们可以通过GOPROXY来解决默认值无法直接访问的问题,因此设置GOPROXY后,无需额外设置。