背景
由於各種問題,國內使用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)
原理
其實golang 在github 上建立了一個鏡像庫,如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
執行一鍵安裝
#!/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
注意
在運行腳本的過程,應為git clone 太頻繁,需要輸入你的GitHub帳號。