问题:
今天运行rsdnstools时碰到问题,编译go程序时候,不去自己的vendor或者gopath里面找包,却直接去GOROOT里面找需要的包,查找资料发现的问题,GOPATH可能是要淘汰的功能了,以后有时间研究一下!!!
GO111MODULE=off,go会从vendor和GOPATH寻找包
GO111MODULE=on,go不会从vendor和GOPATH寻找包,直接加载go. mod加载包
-
通过vendor 编译
0:GO111MODULE=off
1:go get -u -v github. com/kardianos/govendor
2:govendor add +e(生成vendor文件)
3:go build main. go -
通过mod编译
0:GO111MODULE=on
1:go mod init (生成go.mod文件)
2:go build main. go -
通过glide文件
0:GO111MODULE=off
1:brew install glide (mac需要安装)
2:glide init (生成glide.yaml)
3:glide install
4:go build main. go
添加环境变量:[这里直接不配置GOPATH路径了,在linux上为$HOME/go,我使用root用户,所以目录为/root/go]
vim /etc/profile 加入以下三行到文件最后面
export GO111MODULE=on
export GOROOT=/opt/go
export PATH=$PATH:$GOROOT/bin
说明:export GO111MODULE=on是Go1.11中使用modules的一个开关,就是没有强制直接使用modules工具,毕竟也是新出来的;它有三个值auto、on、off;默认为auto,如果为空就是关闭,因为要使用它所以我直接在全局中加入此参数;
使配置生效;
source /etc/profile
查看当前的Go env,可以看到GO111MODULE状态