Ubuntu系统下解决go无法自动下载依赖问题


一、我遇到的问题

go语言官方提供的包下载地址被国内墙屏蔽,导致go语言自动下载文件时报错,错误如下:

Error: failed to create deliver client for orderer: orderer client failed to connect to localhost:7050: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp 127.0.0.1:7050: connect: connection refused"

这里我要特别提一下,和c++/java/python这些我个人之前用过的语言不一样,go语言的import函数可以包含在互联网中的包,在程序编译的时候会自动通过go代理在网上下载依赖包,所以在go编程的时候会遇到网络访问问题。

二、解决方法

我从网上搜索到有专为中国go语言开发者准备的go中国代理,添加方法如下:

#针对go1.13.x及以上用户
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

其他版本/系统用户使用具体信息可以访问官方网站:
https://goproxy.cn/
或者gihub地址:
https://github.com/goproxy/goproxy.cn

但是我遇到了新的问题:

warning: go env -w GOPROXY=... does not override conflicting OS environment variable

大意就是系统环境变量中已经有了GOPROXY的值,go env修改不能覆盖系统变量的值,二者冲突导致go proxy设置失败

此时我通过把修改系统中的环境变量解决了这个问题

sudo gedit /etc/profile
#把下列代码写入文件末尾###########
#export GO111MODULE=on
#export GOPROXY=https://goproxy.cn,direct
##############################
source /etc/profile

选择修改/etc/profile文件的目的是它里面的内容对所有用户生效,因为我目前主要以学习,跑通程序为目的而不是生产目的,访问控制安全不那么重要。
反而由于sudo,su等命令会覆盖当前的用户变量,导致明明export了一些变量程序却还是不通的问题,所以这里一劳永逸,直接将要引入的变量导入profile文件。
另,再注明export函数只会作用于当前shell,所以需要将命令写入文件使得每次启动shell都会调用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值