golang Glide 包管理工具

原创 2018年01月19日 16:17:24

Glide 介绍

glide是Go的包管理工具。支持语义化版本,支持Git、Svn等,支持Go工具链,支持vendor目录,支持从Godep、GB、GPM、Gom倒入,支持私有的Repos和Forks。

http://glidedocs.readthedocs.io/zh/latest/ 中文版

https://glide.sh/ 官网

Glide 安装

go get github.com/Masterminds/glide

这个安装会自动生成执行文件 glide,文件一般位于 go/bin/目录下,所以 你这个目录要有可写权限哦,当然你这个命令也必须支持,否则无法生成

我的 go 目录放在用户根目录下:
mac系统
/Users/fox/go/go go 语言目录

Glide 命令

glide create 初始化项目并创建glide.yaml文件.
glide init 初始化项目并创建glide.yaml文件.
glide update 更新解析下载包依赖
glide up 更新解析下载包依赖
glide install 安装包
glide get 获取单个包
  --all-dependencies 会下载所有关联的依赖包
  -s 删除所有版本控制,如.git
  -v 删除嵌套的vendor
glide name 查看依赖名称
glide list 查看依赖列表
glide help 帮助
glide --version查看版本

glide mirror set [original] [replacement] 替换包的镜像
glide mirror set [original] [replacement] --vcs [type] 替换包的镜像
glide mirror remove [original] 移除包的镜像
glide mirror list 获取包的镜像列表

Golang类库 下载

https://www.golangtc.com/download/package

方法一 解决go get golang.org/x/net 安装失败

使用过,还是会报错

glide mirror set https://golang.org/x/mobile https://github.com/golang/mobile --vcs git
glide mirror set https://golang.org/x/crypto https://github.com/golang/crypto --vcs git
glide mirror set https://golang.org/x/net https://github.com/golang/net --vcs git
glide mirror set https://golang.org/x/tools https://github.com/golang/tools --vcs git
glide mirror set https://golang.org/x/text https://github.com/golang/text --vcs git
glide mirror set https://golang.org/x/image https://github.com/golang/image --vcs git
glide mirror set https://golang.org/x/sys https://github.com/golang/sys --vcs git

然后在 你的项目中,修改glide.yaml文件.在import:下一级增加

- package: golang.org/x/net

注意:这些包,哪个包报错,增加报错的包,不要全部加入,只有使用到的包加入

例如

package: blog
import:
- package: golang.org/x/net
- package: golang.org/x/sys
- package: golang.org/x/mobile
- package: golang.org/x/crypto
- package: golang.org/x/text
- package: golang.org/x/crypto
- package: golang.org/x/tools
- package: golang.org/x/image
。。。。后面的不再复制了

方法二 下载包

mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/net.git #这个就是net包
git clone https://github.com/golang/crypto.git #这个就是crypto包
... 等等 需要的包,请自行替换

方法三 通过代理

首先你要有一个代理,如果没有请请通过其他两个方法
在终端设置(这里设置,关闭终端就失效)

export http_proxy=http://127.0.1:9000
export https_proxy=$http_proxy
export ftp_proxy=$http_proxy
export rsync_proxy=$http_proxy
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"

git 代理也要设置

git config --global http.proxy http://127.0.0.1:1080 
#git config --global https.proxy https://127.0.0.1:1080

不需要代理的时候,可以关闭它

GIT 设置代理为空
git config --global --unset http.proxy 
#git config --global --unset https.proxy

GIT 查看已经设置的值:

git config http.proxy

Glide 生成的 glide.yml 文件说明

请移步此链接查看
http://blog.csdn.net/chenqijing2/article/details/55050843

Glide 团队开发时

需要将 glide.yaml 和 glide.lock 进行版本控制

案例 没有使用Glide的项目

从零开始使用.
下载

wget https://github.com/foxiswho/blog-go/archive/master.zip

解压缩

unzip master.zip
解压缩后得到目录 blog-go-master

移动目录

mv blog-go-master ~/blog-go

添加环境变量把 这个目录加入GOPATH里面
找到你的 GOPATH 配置地方修改

export GOPATH=/Users/fox/go/gopath:/Users/fox/blog-go

进入目录

cd /Users/fox/blog-go/src/blog

Glide 初始化

执行

glide init

输出

[INFO]  Generating a YAML configuration file and guessing the dependencies
[INFO]  Attempting to import from other package managers (use --skip-import to skip)
[INFO]  Scanning code to look for dependencies
[INFO]  --> Found reference to github.com/astaxie/beego
[INFO]  --> Adding sub-package cache to github.com/astaxie/beego
[INFO]  --> Adding sub-package context to github.com/astaxie/beego
[INFO]  --> Adding sub-package httplib to github.com/astaxie/beego
[INFO]  --> Adding sub-package logs to github.com/astaxie/beego
[INFO]  --> Adding sub-package orm to github.com/astaxie/beego
[INFO]  --> Found reference to github.com/go-sql-driver/mysql
[INFO]  --> Found reference to github.com/qiniu/api.v7/auth/qbox
[INFO]  --> Adding sub-package storage to github.com/qiniu/api.v7
[INFO]  --> Found reference to github.com/russross/blackfriday
[INFO]  --> Found reference to github.com/xormplus/xorm
[INFO]  --> Found test reference to github.com/smartystreets/goconvey/convey
[INFO]  Writing configuration file (glide.yaml)
[INFO]  Would you like Glide to help you find ways to improve your glide.yaml configuration?
[INFO]  If you want to revisit this step you can use the config-wizard command at any time.
[INFO]  Yes (Y) or No (N)?
Y
[INFO]  Looking for dependencies to make suggestions on
[INFO]  --> Scanning for dependencies not using version ranges
[INFO]  --> Scanning for dependencies using commit ids
[INFO]  Gathering information on each dependency
[INFO]  --> This may take a moment. Especially on a codebase with many dependencies
[INFO]  --> Gathering release information for dependencies
[INFO]  --> Looking for dependency imports where versions are commit ids

[INFO]  Here are some suggestions...
[INFO]  The package github.com/astaxie/beego appears to have Semantic Version releases (http://semver.org). 
[INFO]  The latest release is v1.9.2. You are currently not using a release. Would you like
[INFO]  to use this release? Yes (Y) or No (N)
Y
[INFO]  Would you like to remember the previous decision and apply it to future
[INFO]  dependencies? Yes (Y) or No (N)
Y
[INFO]  Updating github.com/astaxie/beego to use the release v1.9.2 instead of no release
[INFO]  The package github.com/astaxie/beego appears to use semantic versions (http://semver.org).
[INFO]  Would you like to track the latest minor or patch releases (major.minor.patch)?
[INFO]  The choices are:
[INFO]   - Tracking minor version releases would use '>= 1.9.2, < 2.0.0' ('^1.9.2')
[INFO]   - Tracking patch version releases would use '>= 1.9.2, < 1.10.0' ('~1.9.2')
[INFO]   - Skip using ranges
[INFO]  For more information on Glide versions and ranges see https://glide.sh/docs/versions
[INFO]  Minor (M), Patch (P), or Skip Ranges (S)?
P
[INFO]  Would you like to remember the previous decision and apply it to future
[INFO]  dependencies? Yes (Y) or No (N)
Y
[INFO]  Updating github.com/astaxie/beego to use the range ~1.9.2 instead of commit id v1.9.2
[INFO]  Updating github.com/go-sql-driver/mysql to use the release v1.3 instead of no release
[INFO]  Updating github.com/go-sql-driver/mysql to use the range ~1.3.0 instead of commit id v1.3
[INFO]  Updating github.com/qiniu/api.v7 to use the release v7.2.3 instead of no release
[INFO]  Updating github.com/qiniu/api.v7 to use the range ~7.2.3 instead of commit id v7.2.3
[INFO]  Updating github.com/russross/blackfriday to use the release v2.0.0 instead of no release
[INFO]  Updating github.com/russross/blackfriday to use the range ~2.0.0 instead of commit id v2.0.0
[INFO]  Updating github.com/smartystreets/goconvey to use the release 1.6.3 instead of no release
[INFO]  Updating github.com/smartystreets/goconvey to use the range ~1.6.3 instead of commit id 1.6.3
[INFO]  Configuration changes have been made. Would you like to write these
[INFO]  changes to your configuration file? Yes (Y) or No (N)
Y
[INFO]  Writing updates to configuration file (glide.yaml)
[INFO]  You can now edit the glide.yaml file.:
[INFO]  --> For more information on versions and ranges see https://glide.sh/docs/versions/
[INFO]  --> For details on additional metadata see https://glide.sh/docs/glide.yaml/

第一次生成 glide.yaml 文件

golang 报错解决

glide mirror set https://golang.org/x/mobile https://github.com/golang/mobile --vcs git
glide mirror set https://golang.org/x/crypto https://github.com/golang/crypto --vcs git
glide mirror set https://golang.org/x/net https://github.com/golang/net --vcs git
glide mirror set https://golang.org/x/tools https://github.com/golang/tools --vcs git
glide mirror set https://golang.org/x/text https://github.com/golang/text --vcs git
glide mirror set https://golang.org/x/image https://github.com/golang/image --vcs git
glide mirror set https://golang.org/x/sys https://github.com/golang/sys --vcs git

在项目中,修改glide.yaml文件.在import:下一级增加

- package: golang.org/x/net
- package: golang.org/x/sys
- package: golang.org/x/mobile
- package: golang.org/x/crypto
- package: golang.org/x/text
- package: golang.org/x/crypto
- package: golang.org/x/tools
- package: golang.org/x/image

注意:这些包本项目都使用到,所有都加入

安装依赖

然后执行
glide install
会生成glide.lock文件,锁定安装包的版本

升级

这一步, 不是必须的,例如 你要升级某些包 可以执行

glide up

案例 已经使用Glide的项目

glide install

未完待续

版权声明:原创文章欢迎转载,不过要记得加出处哦 https://blog.csdn.net/wljk506/article/details/79107124

Glide使用,踩过的坑

1.Glide特点 使用简单 可配置度高,自适应程度高 支持常见图片格式: Jpg png gif webp 支持多种数据源:  网络、本地、资源、Assets 等 高效缓存策略,支持M...
  • TS_learner
  • TS_learner
  • 2017-05-12 09:14:57
  • 1995

Golang包管理工具Glide,你值得拥有

“依赖地狱”是每个程序员在成长之路上都会面临的情况,首先我们通过语义化版本来控制软件的版本,然后在我们的项目里通过指定软件版本来达到控制依赖的目的。如:你的项目A依赖多个项目B1,B2,B3,而B1,...
  • chenqijing2
  • chenqijing2
  • 2017-02-13 17:22:18
  • 3595

无坑安装使用godep(golang.org/x/tools/go/vcs的错误解决方案)

安装godep 官方的安装文档是使用go get github.com/tools/godep,很可惜,因为“网络”问题会报一个找不到golang.org/x/tools/go/vcs的错误。 ...
  • sindy_yoga
  • sindy_yoga
  • 2016-07-21 21:00:42
  • 3131

imports golang.org/x/tools/go/vcs: unrecognized import path "golang.org/x/tools/

错误信息: imports golang.org/x/tools/go/vcs: unrecognized import path "golang.org/x/tools/go/vcs" ...
  • gsying1474
  • gsying1474
  • 2016-07-02 21:30:34
  • 2895

换掉图片加载框架引发的血案 代理

今天打算换掉项目中的图片加载框架 好家伙 来问题了 不同的图片加载框架 有不同的API 导致我换掉的话 所有使用的地方都要换掉我那个后悔啊 没有在项目开始的时候 新建一个自己的类 包装加载框架 ...
  • liubo080852
  • liubo080852
  • 2015-10-29 17:06:56
  • 600

Glide管理Golang项目

未使用Glide遇到的问题 如果你的项目A依赖多个项目B1,B2,B3,而B1,B2,B3又依赖着其它项目C1,C2…。一个项目依赖这多个项目,当项目C1修复BUG版本发生变化,如果A依旧使...
  • qq_33754458
  • qq_33754458
  • 2017-06-22 15:53:25
  • 1270

go包管理工具-glide使用方法及踩坑记录

前言大学以来一直想做一个OJ,终于可以开始,而且是用新学的Go来写,心里还是挺兴奋的。 项目启动,要搭架子,第一件事,当然是选择一个包管理工具。Go的包管理还是挺混乱的,没有一个能像Java的Mav...
  • to_be_better
  • to_be_better
  • 2017-10-02 05:23:28
  • 867

glide install golang.org 失败

glide install golang.org 失败背景因为golang.org被墙的原因,所以国内安装其中的库会失败(Cannot detect VCS)。 解决方案一按照如下方式配置镜像:$ ...
  • wj199395
  • wj199395
  • 2017-11-22 14:50:15
  • 1632

golang Glide 包管理工具

Glide 介绍 glide是Go的包管理工具。支持语义化版本,支持Git、Svn等,支持Go工具链,支持vendor目录,支持从Godep、GB、GPM、Gom倒入,支持私有的Repos和Fork...
  • wljk506
  • wljk506
  • 2018-01-19 16:17:24
  • 257

浅析android图片加载之Glide框架一

图片是承载数据内容最直接的方式,对于客户端而言图片加载无疑是非常重要的,因此我们有必要去了解部分图片加载框架实现。Glide图片框架用起来很方便,接口调用都简单易懂,加载图片也非常流畅。今天咱们来简单...
  • u011098381
  • u011098381
  • 2018-04-03 16:04:25
  • 9
收藏助手
不良信息举报
您举报文章:golang Glide 包管理工具
举报原因:
原因补充:

(最多只允许输入30个字)