背景
由于各种问题,国内使用 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 包,其实只需要以下步骤:
JTBC CMS(5.0) 是一款基于PHP和MySQL的内容管理系统原生全栈开发框架,开源协议为AGPLv3,没有任何附加条款。系统可以通过命令行一键安装,源码方面不基于任何第三方框架,不使用任何脚手架,仅依赖一些常见的第三方类库如图表组件等,您只需要了解最基本的前端知识就能很敏捷的进行二次开发,同时我们对于常见的前端功能做了Web Component方式的封装,即便是您仅了解HTML/CSS也
3
立即学习“go语言免费学习笔记(深入)”;
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账号。

