go语言快速入门:GOPROXY设定(25)

通过使用镜像仓库,go语言项目编译所需要的module可以通过设定GOPROXY来设定国内镜像仓库来实现。这篇文章以k3s编译时碰到的问题为例进行使用的说明。

事前准备

  • go语言环境:1.13.5
[root@liumiaocn ~]# which go
/usr/local/go/bin/go
[root@liumiaocn ~]# go version
go version go1.13.5 linux/amd64
[root@liumiaocn ~]#
  • k3s源码下载
[root@liumiaocn ~]# git clone http://github.com/rancher/k3s.git
Cloning into 'k3s'...
remote: Enumerating objects: 37, done.
remote: Counting objects: 100% (37/37), done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 926826 (delta 10), reused 18 (delta 5), pack-reused 926789
Receiving objects: 100% (926826/926826), 518.38 MiB | 1.18 MiB/s, done.
Resolving deltas: 100% (676826/676826), done.
Checking out files: 100% (12503/12503), done.
[root@liumiaocn ~]#

现象

编译时在可能会出现download问题,执行示例如下所示:

[root@liumiaocn ~]# cd k3s
[root@liumiaocn k3s]# ls
BUILDING.md  docker-compose.yml          e2e     install.sh   main.go    package    scripts      vendor
cmd          Dockerfile.dapper           go.mod  k3s.service  Makefile   pkg        tests        vendor.go
contrib      Dockerfile.sonobuoy.dapper  go.sum  LICENSE      manifests  README.md  Vagrantfile
[root@liumiaocn k3s]# go build -o k3s
go: github.com/NYTimes/[email protected]: Get https://proxy.golang.org/github.com/%21n%21y%21times/gziphandler/@v/v1.1.1.mod: dial tcp 216.58.200.241:443: i/o timeout
[root@liumiaocn k3s]# 

对应方法

可以使用阿里云或者七牛云的镜像来解决这个问题:

  • 方法1: 使用七牛云镜像

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

  • 方法2: 使用阿里云镜像

go env -w GO111MODULE=on
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct

结果确认

设定之后可以看到可以正常从镜像进行依赖内容的下载了

[root@liumiaocn k3s]# go env -w GO111MODULE=on
[root@liumiaocn k3s]# go env -w GOPROXY=https://goproxy.cn,direct
[root@liumiaocn k3s]# go build -o k3s
go: downloading github.com/pkg/errors v0.8.1
go: downloading github.com/go-sql-driver/mysql v1.4.1
...省略
[root@liumiaocn k3s]# 

你可能感兴趣的:(#,go语言快速入门)