찾다
백엔드 개발Golanggolang.org/x 패키지를 다운로드하여 실패한 문제를 빠르게 해결하세요.

이 글은 go 언어 튜토리얼 칼럼에서 한 번의 클릭으로 go get golang.org/x 패키지 실패 문제를 해결하는 방법을 소개하기 위해 작성되었습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

golang.org/x 패키지 실패를 가져오는 원클릭 솔루션

문제 설명

go get, go install, go를 사용할 때 mod 및 기타 명령을 실행하면 해당 패키지 또는 종속 패키지가 자동으로 다운로드됩니다. 그러나 잘 알려진 이유로 인해 <code>golang.org/x/...와 유사한 패키지는 다운로드에 실패합니다. 아래와 같이: go getgo installgo mod 等命令时,会自动下载相应的包或依赖包。但由于众所周知的原因,类似于 golang.org/x/... 的包会出现下载失败的情况。如下所示:

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

go get golang.org/x/sys: unrecognized import path "golang.org/x/sys" (https fetch: Get https://golang.org/x/sys?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

解决方式

那我们该如何解决问题呢?毕竟还要制造 bug 的嘛~

手动下载

我们常见的 golang.org/x/... 包,一般在 GitHub 上都有官方的镜像仓库对应。比如 golang.org/x/text 对应 github.com/golang/text。所以,我们可以手动下载或 clone 对应的 GitHub 仓库到指定的目录下。

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

当如果需要指定版本的时候,该方法就无解了,因为 GitHub 上的镜像仓库多数都没有 tag。并且,手动嘛,程序员怎么能干呢,尤其是依赖的依赖,太多了。

设置代理

如果你有代理,那么可以设置对应的环境变量:

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

或者,直接用 all_proxy

export all_proxy=http://proxyAddress:port

go mod replace

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

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

以下为参考示例:

module example.com/hello

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

replace (
    golang.org/x/text => github.com/golang/text v0.3.0
)

类似的还有 glide、gopm 等这类第三方包管理工具,都不同方式的解决方案提供给我们。

GOPROXY 环境变量

终于到了本文的终极大杀器 —— GOPROXY

我们知道从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具。

其实还新增了 GOPROXY 环境变量。如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。这无疑对我等无法科学上网的开发良民来说是最大的福音。

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

export GOPROXY=https://goproxy.io

不过,需要依赖于 go module 功能。可通过 export GO111MODULE=on 开启 MODULE。

如果项目不在 GOPATH 中,则无法使用 go get ...,但可以使用 go mod ... 相关命令。

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

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

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

最后,我们当然推荐使用 GOPROXYrrreeeSolution

그렇다면 어떻게 문제를 해결할 수 있을까요? 결국 여전히 버그가 있습니다~

수동 다운로드

우리의 일반적인 golang.org/x/... 패키지에는 일반적으로 GitHub의 공식 미러 저장소가 있습니다. 예를 들어 golang.org/x/textgithub.com/golang/text에 해당합니다. 따라서 해당 GitHub 저장소를 지정된 디렉터리에 수동으로 다운로드하거나 복제할 수 있습니다.
rrreee🎜버전을 지정해야 할 때 이 방법은 해결책이 없습니다. GitHub의 미러 웨어하우스 대부분에는 태그가 없기 때문입니다. 더욱이, 특히 종속성이 너무 많기 때문에 프로그래머가 어떻게 수동으로 이를 수행할 수 있습니까? 🎜

프록시 설정

🎜 🎜프록시가 있는 경우🎜 해당 환경 변수를 설정할 수 있습니다: 🎜rrreee🎜 또는 all_proxy를 직접 사용: 🎜rrreee

go mod 교체

🎜Go 버전 1.11부터 패키지 종속성 관리 문제를 해결하기 위해 go 모듈이 새롭게 지원됩니다. 이 도구는 패키지 별칭 문제를 해결하기 위해 replace를 제공합니다. golang.org/x를 다운로드할 수 없는 문제도 해결할 수 있습니다. 🎜🎜go 모듈은 기본 go mod 명령에 통합되어 있지만 코드 베이스가 $GOPATH에 있는 경우 모듈 code> 이 기능은 기본적으로 활성화되어 있지 않습니다. 활성화하는 방법은 매우 간단합니다. <code>export GO111MODULE=on 환경 변수를 통해 활성화할 수 있습니다. 🎜🎜다음은 참조 예입니다. 🎜rrreee🎜마찬가지로 다양한 솔루션을 제공하는 glide 및 gopm과 같은 타사 패키지 관리 도구가 있습니다. 🎜

GOPROXY 환경 변수

🎜드디어 이 기사의 궁극적인 킬러인 🎜GOPROXY🎜에 도달했습니다. 🎜🎜 Go 1.11 버전부터 go 모듈 패키지 종속성 관리 도구가 공식적으로 지원되는 것으로 알고 있습니다. 🎜🎜사실 GOPROXY 환경 변수도 추가되었습니다. 이 변수를 설정하면 이전처럼 코드 라이브러리에서 직접 다운로드하지 않고, 이 환경 변수에 설정된 프록시 주소를 통해 소스 코드를 다운로드하게 됩니다. 이는 과학적으로 인터넷에 접근할 수 없는 우리 같은 개발자에게는 의심할 여지 없이 가장 좋은 소식입니다. 🎜🎜더욱 기쁜 점은 오픈 소스 프로젝트 goproxy.io가 우리가 원하는 것을 달성하는 데 도움이 된다는 것입니다. 이 프로젝트를 통해 개발자는 클릭 한 번으로 자신만의 GOPROXY 프록시 서비스를 구축할 수 있습니다. 동시에 공개 프록시 서비스 https://goproxy.io도 제공됩니다. 차단된 소스 코드 패키지를 정상적으로 다운로드하려면 이 환경 변수만 설정하면 됩니다. 🎜rrreee🎜그러나 🎜 go 모듈 함수 🎜에 종속성이 필요합니다. MODULE은 export GO111MODULE=on을 통해 켤 수 있습니다. 🎜🎜프로젝트가 GOPATH에 없으면 go get...을 사용할 수 없지만 관련 go mod...를 사용할 수 있습니다. 명령. 🎜🎜이 환경 변수를 공백으로 설정하여 export GOPROXY=를 끌 수도 있습니다. 🎜🎜Windows 사용자의 경우 PowerShell에서 설정할 수 있습니다. 🎜rrreee🎜마지막으로 🎜Go 버전 > 1.11🎜. 🎜🎜마지막으로 Qiniu는 국내 사용자가 액세스할 수 없는 패키지에 더 빠르게 액세스할 수 있도록 국내 프록시 goproxy.cn도 출시했습니다. 이는 정말 양심적인 일입니다. 🎜🎜

위 내용은 golang.org/x 패키지를 다운로드하여 실패한 문제를 빠르게 해결하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 segmentfault에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
go语言有没有缩进go语言有没有缩进Dec 01, 2022 pm 06:54 PM

go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofmt使用tab进行缩进);gofmt工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。

go语言为什么叫gogo语言为什么叫goNov 28, 2022 pm 06:19 PM

go语言叫go的原因:想表达这门语言的运行速度、开发速度、学习速度(develop)都像gopher一样快。gopher是一种生活在加拿大的小动物,go的吉祥物就是这个小动物,它的中文名叫做囊地鼠,它们最大的特点就是挖洞速度特别快,当然可能不止是挖洞啦。

聊聊Golang中的几种常用基本数据类型聊聊Golang中的几种常用基本数据类型Jun 30, 2022 am 11:34 AM

本篇文章带大家了解一下golang 的几种常用的基本数据类型,如整型,浮点型,字符,字符串,布尔型等,并介绍了一些常用的类型转换操作。

一文详解Go中的并发【20 张动图演示】一文详解Go中的并发【20 张动图演示】Sep 08, 2022 am 10:48 AM

Go语言中各种并发模式看起来是怎样的?下面本篇文章就通过20 张动图为你演示 Go 并发,希望对大家有所帮助!

tidb是go语言么tidb是go语言么Dec 02, 2022 pm 06:24 PM

是,TiDB采用go语言编写。TiDB是一个分布式NewSQL数据库;它支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性。TiDB架构中的PD储存了集群的元信息,如key在哪个TiKV节点;PD还负责集群的负载均衡以及数据分片等。PD通过内嵌etcd来支持数据分布和容错;PD采用go语言编写。

go语言是否需要编译go语言是否需要编译Dec 01, 2022 pm 07:06 PM

go语言需要编译。Go语言是编译型的静态语言,是一门需要编译才能运行的编程语言,也就说Go语言程序在运行之前需要通过编译器生成二进制机器码(二进制的可执行文件),随后二进制文件才能在目标机器上运行。

聊聊Golang自带的HttpClient超时机制聊聊Golang自带的HttpClient超时机制Nov 18, 2022 pm 08:25 PM

​在写 Go 的过程中经常对比这两种语言的特性,踩了不少坑,也发现了不少有意思的地方,下面本篇就来聊聊 Go 自带的 HttpClient 的超时机制,希望对大家有所帮助。

golang map怎么删除元素golang map怎么删除元素Dec 08, 2022 pm 06:26 PM

删除map元素的两种方法:1、使用delete()函数从map中删除指定键值对,语法“delete(map, 键名)”;2、重新创建一个新的map对象,可以清空map中的所有元素,语法“var mapname map[keytype]valuetype”。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.