Background
다양한 문제로 인해 go get을 사용하여 중국에서 golang 공식 패키지를 설치하는 데 실패할 수 있습니다. 예를 들어 내가 직접 collidermain을 설치하면 다음과 같은 오류가 발생합니다. 발생:
$ go get collidermain package golang.org/x/net/websocket: unrecognized import path "golang.org/x/net/websocket" (https fetch: Get https://golang.org/x/net/websocket?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
로그인 후 복사
Principle
실제로 golang은 https://github.com/golang/net
과 같은 github에 미러 라이브러리를 구축했습니다. 이는 https://golang입니다. .org/x/ net
의 미러 라이브러리 https://github.com/golang/net
即是 https://golang.org/x/net
的镜像库
获取 golang.org/x/net 包,其实只需要以下步骤:
mkdir -p $GOPATH/src/golang.org/x cd $GOPATH/src/golang.org/x git clone https://github.com/golang/net.git
로그인 후 복사
其它 golang.org/x 下的包获取皆可使用该方法。
所以在这里写了一个bash脚本一键安装golang.org/x的包
- windows用户 git-bash 来执行gox.sh这个脚本
- *unix用户 先
chmod +x gox.sh
添加可以执行权限.在使用./gox.sh
golang.org/x/net 패키지를 얻으려면 다음 단계만 필요합니다:
#!/usr/bin/env bash #为了兼容windows下的bash cd $GOPATH; #创建 $GOPATH/src/golang.org/x 目录 mkdir -p $GOPATH/src/golang.org/x; echo "已经安装的golang.org/x package"; ls; echo "下面一行 for in 中包的名字您可以自己来定义" for name in "glog" "image" "perf" "snappy" "term" "sync" "winstrap" "cwg" "leveldb" "text" "net" "build" "protobuf" "dep" "sys" "crypto" "gddo" "tools" "scratch" "proposal" "mock" "oauth2" "freetype" "debug" "mobile" "gofrontend" "lint" "appengine" "geo" "review" "arch" "vgo" "exp" "time";do cd $GOPATH/src/golang.org/x; if [ -d "$name" ] then cd $name; echo $name "包已经存在,使用git pull来更新源码"; git pull; else git_url="https://github.com/golang/${name}.git"; echo "开始clone golang.org/x 在github.com上的镜像代码:${git_url}"; git clone --depth 1 "$git_url"; cd $name; fi #go install; done
로그인 후 복사
이 방법은 golang에서 다른 패키지를 얻는 데 사용할 수 있습니다. 조직/x.
그래서 여기에 bash 스크립트를 작성하여 한 번의 클릭으로 golang.org/x 패키지를 설치했습니다
- Windows 사용자는 git-bash를 사용하여 gox.sh 스크립트를 실행합니다