背景:
在某些环境和条件下,生产环境无法连接网络,导致无法使用go get的方式直接安装go插件或应用。
原理解析:
在介绍解决方案之前,我们先来理解下go get的原理。
go get实际上是先把代码从github.com上面下载到本地,具体位置为$GOPATH
假设我下载项目地址为 github.com/beego/bee
[root@sintopan gopath]# echo $GOPATH
/opt/gopath
[root@sintopan gopath]# tree src -L 3
src
└── github.com
└── beego
└── bee
这其中为自动解析并下载所关联的github.com的其他组件或项目,非常方便,如果我们网络无法连接,则需要把这个下载完成的src目录,拷贝到另外一台服务器,然后执行go install。
所以,go get 的原理就是,第一步就是git 项目,第二步就是go install,自动编译安装。然后在$GOPATH的bin目录下生成一个二进制文件。
操作实践:
[root@sintopan gopath]# tree -L 3
.
├── bin
│ └── bee
└── src
└── github.com
└── beego
现在我们将该源码包打包,解压到windows平台下的go环境进行编译安装。
Windows下的go环境如下: