当前位置:首页 > CN2资讯 > 正文内容

Golang 入门 : 配置代理

14小时前CN2资讯

由于一些客观原因的存在,我们开发 Golang 项目的过程总会碰到无法下载某些依赖包的问题。这不是一个小问题,因为你的工作会被打断,即便你使用各种神通解决了问题,很可能这时你的线程已经切换到其他的事情上了(痛恨思路被打断!)。所以最好是一开始我们就重视这个问题,并一劳永逸的解决它。

问题描述

当我们使用 go get、go install、go mod 等命令时,类似于 /x/... 的包会是无法下载的。比如通过下面的命令下载 sys 包:

$ go get -u /x/sys

下载肯定会失败:

设置代理

如果你有自己的代理服务器,那就很容易了,这也是一劳永逸的方法。直接设置环境变量 http_proxy 和 https_proxy 就行了:

export http_proxy=http://proxyAddress:port export https_proxy=http://proxyAddress:port

比如笔者在局域网中共享了代理 192.168.21.1:1080:

$ export http_proxy=http://192.168.21.1:1080 $ export https_proxy=http://192.168.21.1:1080

然后执行下面的命令后就能够下载了:

$ go get -u /x/sys

手动下载并安装包

如果一时找不到合适的代理,还可以临时通过手动的方式下载包。我们常见的 /x/... 包,一般在 GitHub 上都有官方的镜像仓库对应。比如 zieckey/ 就是作为 /x 的镜像库存在的。我们可以手动下载或 clone 对应的 GitHub 仓库到指定的目录下,比如从 zieckey/ 下载 x 目录下的所有包。或者是每次只下载单个的库,下面的示例演示如何下载 text 库:

$ mkdir $GOPATH/src//x $ cd $GOPATH/src//x $ git clone git@:golang/text.git

当如果需要指定版本的时候,该方法就无解了,因为 GitHub 上的镜像仓库多数都没有 tag。

使用 go mod replace

从 Go 1.11 版本开始,新增支持了 go modules 用于解决包依赖管理问题。该工具提供了 replace,就是为了解决包的别名问题,也能替我们解决 /x 无法下载的的问题。

go module 被集成到原生的 go mod 命令中,但是如果你的代码库在 $GOPATH 中,module 功能是默认不会开启的,想要开启也非常简单,通过一个环境变量即可开启 export GO111MODULE=on。比如下面的示例,在go.mod中指定下面的代码:

module example.com/demo require ( /x/text v0.3.0 ) replace ( /x/text => /golang/text v0.3.0 )

|## 使用 GOPROXY 环境变量 从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具。其实还新增了 GOPROXY 环境变量。如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。比如我们可以指定自己的代理地址。

更可喜的是,goproxy.io 这个开源项目帮我们实现好了我们想要的。该项目允许开发者一键构建自己的 GOPROXY 代理服务。同时,也提供了公用的代理服务 https://goproxy.io,我们只需设置该环境变量即可正常下载被墙的源码包了:

export GO111MODULE=on export GOPROXY=https://goproxy.io

也可以通过置空这个环境变量来关闭,export GOPROXY=。

对于 Windows 用户,可以在 PowerShell 中设置:

$env:GOPROXY = "https://goproxy.io"

最后,我们当然推荐使用 GOPROXY 这个环境变量的解决方式,前提是 Go version >= 1.11。

下载 /x/sys 包:

$ go get -u /x/sys

下载到的包在 $GPATH/pkg/mod//x/

作者:sparkdev 出处:http://www.cnblogs.com/sparkdev/

51Reboot Python 运维开发18天训练营1299特价倒计时3天

网络班|面授班同步,有想要咨询的WeChat:17812796384

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24880.html

    分享给朋友:

    “Golang 入门 : 配置代理” 的相关文章

    电路板上的CN2是什么?连接器的奥秘与应用

    在电子设计和电路板制作中,我们常常会看到各种标识和缩写,而“CN2”就是其中之一。对于刚入行的电子工程师或电路板设计师来说,这个标识可能会让人感到困惑。CN2到底是什么意思?它在电路板中扮演着怎样的角色?今天,我们就来深入探讨这个问题。我们需要明确的是,CN2中的“CN”是“Connector”的缩...

    Siteground怎么样?深入分析其安全性、正常运行时间与客户支持

    Siteground的安全性实践 谈到Siteground的安全性实践,我总是很欣赏他们的努力。作为一个成立于2004年的托管服务商,Siteground在安全方面采取了多重措施。我注意到,首先,他们为所有用户提供免费的Let’s Encrypt SSL证书。SSL证书能够加密网站与访客之间的数据,...

    如何获取便宜稳定算力以推动科研与技术创新

    便宜稳定算力是一个现代计算资源获取的概念,特别是在人工智能、深度学习及科学计算等领域中,这种计算能力的经济性与可靠性显得尤为重要。它的定义可以简单理解为以相对较低的成本获得高效、稳定的计算资源。随着科技的迅速发展,企业和研究机构对计算资源的需求逐渐增加,如何以合理的投资实现算力购买成为一个值得关注的...

    选择香港机房的优势与服务:最理想的数据中心解决方案

    在当今数字化的时代,香港机房作为亚洲地区的数据中心枢纽,其重要性愈发凸显。随着全球对高效、安全、稳定数据处理需求的上升,香港凭借其优越的地理位置和完善的网络基础设施,已成为众多企业首选的托管与服务器服务地点。以高速网络连接、优质的BGP多线路接入以及高标准的设施著称,香港机房为客户提供了一系列的解决...

    Zgo VPS:高性能虚拟专用服务器的最佳选择

    在2021年,ZgoCloud(最初名为Zgovps)如雨后春笋般成立于美国特拉华州。作为一家新兴的技术公司,我们专注于提供高性能的虚拟专用服务器(VPS),这让我对公司的前景充满了期待。我们最初的使命是为各种用户提供可靠的网络解决方案,而现在我们已经成长为行业内的一股重要力量。 我们的全球数据中心...

    Linode新加坡服务器速度与性能评测

    Linode新加坡服务器概述 在当今互联网的快速发展中,选择一款合适的服务器至关重要。Linode是一个备受欢迎的云服务提供商,凭借其强大的全球服务网络而受到许多用户的信任。尤其是Linode的新加坡服务器,以其优越的速度和性能而显得尤为突出。 Linode在多个国家和地区设有数据中心,其中新加坡的...