golang.org/x一鍵安裝腳本

背景

因爲各類問題,國內使用 go get 安裝 golang 官方包可能會失敗,如我本身在安裝 collidermain 時,出現瞭如下報錯:git

$ 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 的鏡像庫github

獲取 golang.org/x/net 包,其實只須要如下步驟:golang

mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/net.git

其它 golang.org/x 下的包獲取皆可以使用該方法。web

因此在這裏寫了一個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帳號shell

相關文章
相關標籤/搜索