go 离线编译安装组件

背景:

在某些环境和条件下,生产环境无法连接网络,导致无法使用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环境如下:

GOPATH=E:\golang\demo

将解压后的源码按照目录结构放在src目录下,如E:\golang\demo\src\github.com\beego\bee

然后执行go install github.com\beego\bee,这个命令可以在任意目录执行后面的github.com\beego\bee是相对于%GOPATH%\src

E:\golang\src>go install github.com\beego\bee

此时如果编译没问题的话,那么会在%GOPATH%下生成一个bee的可执行文件,这样就完成了离线的编译安装go组件或项目。

你可能感兴趣的:(go语言)