衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Golang配置代理方法

馬哥Linux運維 ? 來源:博客園sparkdev ? 2024-11-11 11:17 ? 次閱讀

由于一些客觀原因的存在,我們開發 Golang 項目的過程總會碰到無法下載某些依賴包的問題。這不是一個小問題,因為你的工作會被打斷,即便你使用各種神通解決了問題,很可能這時你的線程已經切換到其他的事情上了(痛恨思路被打斷!)。所以最好是一開始我們就重視這個問題,并一勞永逸的解決它。

問題描述

當我們使用 go get、go install、go mod 等命令時,類似于 golang.org/x/... 的包會是無法下載的。比如通過下面的命令下載 sys 包:

$ go get -u golang.org/x/sys

下載肯定會失敗:

159224f6-9061-11ef-a511-92fbcf53809c.png

設置代理

如果你有自己的代理服務器,那就很容易了,這也是一勞永逸的方法。直接設置環境變量 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 golang.org/x/sys

手動下載并安裝包

如果一時找不到合適的代理,還可以臨時通過手動的方式下載包。我們常見的 golang.org/x/... 包,一般在 GitHub 上都有官方的鏡像倉庫對應。比如zieckey/golang.org就是作為 golang.org/x 的鏡像庫存在的。我們可以手動下載或 clone 對應的 GitHub 倉庫到指定的目錄下,比如從zieckey/golang.org下載 x 目錄下的所有包。或者是每次只下載單個的庫,下面的示例演示如何下載 text 庫:

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

當如果需要指定版本的時候,該方法就無解了,因為 GitHub 上的鏡像倉庫多數都沒有 tag。

使用 go mod replace

從 Go 1.11 版本開始,新增支持了 go modules 用于解決包依賴管理問題。該工具提供了 replace,就是為了解決包的別名問題,也能替我們解決 golang.org/x 無法下載的的問題。

go module 被集成到原生的 go mod 命令中,但是如果你的代碼庫在 $GOPATH 中,module 功能是默認不會開啟的,想要開啟也非常簡單,通過一個環境變量即可開啟 export GO111MODULE=on。比如下面的示例,在go.mod中指定下面的代碼:

module example.com/demo


require (
    golang.org/x/text v0.3.0
)


replace (
    golang.org/x/text => github.com/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。

下載 golang.org/x/sys 包:

$ go get -u golang.org/x/sys

15ab71ea-9061-11ef-a511-92fbcf53809c.png

下載到的包在 $GPATH/pkg/mod/golang.org/x/

15c328b2-9061-11ef-a511-92fbcf53809c.png

鏈接:https://www.cnblogs.com/sparkdev/p/10649159.html

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9304

    瀏覽量

    86062
  • 命令
    +關注

    關注

    5

    文章

    696

    瀏覽量

    22110
  • 線程
    +關注

    關注

    0

    文章

    505

    瀏覽量

    19758

原文標題:Golang 配置代理方法

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于Linux內核的透明代理配置方案

    本內容提供了基于Linux內核的透明代理配置方案,先解釋為什么要配置透明代理,如何利用Linux內核來實現
    發表于 11-03 16:47 ?881次閱讀

    Golang接口的作用和應用場景

    Golang(Go)作為一門現代的靜態類型編程語言,提供了許多強大的特性,其中之一便是接口(interface)。接口是Golang中的一個核心概念,它具有廣泛的應用場景,可以幫助開發者實現
    的頭像 發表于 12-05 10:44 ?1176次閱讀

    如何使用Golang連接MySQL

    首先我們來看如何使用Golang連接MySQL。
    的頭像 發表于 01-08 09:42 ?3441次閱讀
    如何使用<b class='flag-5'>Golang</b>連接MySQL

    Golang怎么實現UTS隔離

    Golang實現UTS隔離
    發表于 08-23 14:44

    Golang爬蟲語言接入代理

    HTTP,獲取數據4、屏蔽無效請求5、解析數據內容6、儲存數據7、使用爬蟲代理持續采集以下是golang語言配置爬蟲代理代碼demo :package mainimport ("net
    發表于 09-09 17:41

    簡答幾步搭建golang 1.5開發環境

    由于在arm linux上,golang沒有提供編譯好的二進制可執行文件,需要自己編譯一下。golang已經發展到1.5版,從這版開始,所有的東西都是用golang 編譯出來的,包括編譯器。所以要
    發表于 07-07 10:23

    如何在Golang中實現反向代理

    【導讀】在本文中,我們將了解反向代理,它的應用場景以及如何在 Golang 中實現它。 反向代理是位于 Web 服務器前面并將客戶端(例如 Web 瀏覽器)的請求轉發到 Web 服務器的服務器。它們
    的頭像 發表于 08-23 10:22 ?2189次閱讀

    Linux中如何用vim做golang開發環境

    vim 做 golang 開發環境,多么炫酷!還沒嘗試過用 vim 做開發環境的同學可以跟著這篇文檔把環境搭建起來了! 準備條件,是已經安裝好 golang 環境,還需要把 golang 的環境變量
    的頭像 發表于 10-08 17:20 ?1624次閱讀

    http代理概述及代碼實現方法

    本文詳細介紹了Golang 實現 http 代理的實現,在實際業務中有需求的同學可以學起來了!
    的頭像 發表于 05-14 15:02 ?4259次閱讀

    初探Golang內聯

    今天我們來聊聊 Golang 中的內聯。
    的頭像 發表于 12-13 09:51 ?991次閱讀

    GoLang的安裝和使用

    GoLang的安裝和使用
    的頭像 發表于 01-13 14:06 ?1307次閱讀
    <b class='flag-5'>GoLang</b>的安裝和使用

    Golang實現一個簡單的http代理

    本文詳細介紹了Golang 實現 http 代理的實現,在實際業務中有需求的同學可以學起來了!
    的頭像 發表于 04-10 11:29 ?1500次閱讀

    一個快速應用程序開發(RAD)工具(Golang版)

    SNMPAgent Builder(Golang版)是一個快速應用程序開發(RAD)工具,用于基于Golang 的 SNMP代理開發。提供了一個直觀的圖形用戶界面,用于自動執行各種SNMP
    的頭像 發表于 04-13 09:30 ?1595次閱讀

    【芒果派MangoPi MQ Quad】使用Golang點燈

    使用Golang在芒果派上點燈
    的頭像 發表于 07-21 14:44 ?769次閱讀
    【芒果派MangoPi MQ Quad】使用<b class='flag-5'>Golang</b>點燈

    鴻蒙OpenHarmony:【配置代理

    新建代理配置文件。
    的頭像 發表于 04-29 22:17 ?860次閱讀
    鴻蒙OpenHarmony:【<b class='flag-5'>配置</b><b class='flag-5'>代理</b>】
    网上百家乐官网怎么破解| 百家乐官网赔率计算| 百家乐官网赌博怎么玩| 澳门百家乐官网破解| 新花园百家乐官网的玩法技巧和规则| 澳门百家乐有限公司| 大发888娱乐城出纳| 徐州市| 悦榕庄百家乐官网的玩法技巧和规则 | 百家乐是怎样算牌| 六合彩今天开什么| 大发888官网| 百家乐官网开和几率| 发中发百家乐的玩法技巧和规则| 泽普县| 同乐城百家乐官网娱乐城| 大发888娱乐官方| 百家乐官网一起多少张牌| 玩百家乐犯法| 在线棋牌| 阴宅24水口| 大发888 王博| 百家乐官网庄闲偏差有多大| 百家乐技巧打| 百家乐官网技术秘籍| 淘金百家乐现金网| 德州扑克入门| 属蛇和属马合作做生意谁吃亏| 大发8880634| 百家乐视频象棋| 百家乐投注| 百家乐网站可信吗| 云鼎百家乐官网程序开发有限公司| 大发888游戏官方下载客户端 | 赌博技术| 百家乐怎么注册| 百家乐官网赌场国际| 百家乐老是输| 百家乐官网庄家怎样赚钱| 六合彩开奖时间| 怎么玩百家乐网上赌博|