godep 包管理工具

godep是解决包依赖的管理工具

安装

go get github.com/tools/godep

成功安装后,在GOPATH的bin目录下会有一个godep可执行的二进制文件,后面执行的命令都是用这个,间隔这个目录加入到PATH目录中。

编译和运行

项目用godep管理后,要编译和运行项目的时候再用go run和go build显然就不行了,因为go命令是直接到GOPATH目录下去找第三方库。
而使用godep下载的依赖库放到Godeps/workspace目录下的;

godep go build XXX

godep中的go命令,就是将原先的go命令加了一层壳,执行godep go的时候,会将当前项目的workspace目录加入GOPATH变量中;

godep save

godep save将项目中使用到的第三方库复制到项目的Godeps目录下。

godep save 会自动扫描当前目录所属包中import的所有外部依赖库(非系统库),并查看其是否属于某个代码管理工具(比如git,hg)。若是,则把此库获取路径和当前对应的revision(commit id)记录到当前目录Godeps下的Godeps.json,同时,把不含代码管理信息(如.git目录)的代码拷贝到Godeps/_workspace/src下,用于后继godep go build等命令执行时固定查找依赖包的路径。

因此,godep save能否成功执行需要有两个要素:
当前或者需扫描的包均能够编译成功:因此所有依赖包事先都应该已经或go get或手工操作保存到当前GOPATH路径下
依赖包必须使用了某个代码管理工具(如git,hg):这是因为godep需要记录revision

godep restore

如果下载的项目中只有Godeps.json文件,而没有包含第三库则可以使用godep restore这个命令将所有的依赖库下来下来到GOPATH的src中。

godep restore

godep restore执行时,godep会按照Godeps/Godeps.json内列表,依次执行go get -d -v 来下载对应依赖包到GOPATH路径下,因此,如果某个原先的依赖包保存路径(GOPATH下的相对路径)与下载url路径不一致,比如kuberbetes在github上路径是github.com/kubernetes,而代码内import则是k8s.io,则会导致无法下载成功,也就是说godep restore不成功。这种只能手动,比如手动创建$GOPATH/k8s.io目录,然后git clone。

golang自带包管理工具

自带工具:go get
go get可以将依赖的第三方库下载本GOPATH目录,在代码中直接import相应的代码库就可以了。
与godep相比,如果项目引用的第三方库没有列入到项目里面,安装项目时,针对第三方库需要使用go get一个个下载,比较麻烦;

注:使用godep restore可能导致部分库无法下载下来;编译会报错:
cmd/decode.go:16:2: cannot find package "github.com/CodisLabs/redis-port/pkg/libs/atomic2" in any of:

此时针对报错的特定库再go get一般都能下载:
go get github.com/CodisLabs/redis-port/pkg/libs/atomic2

godep支持的命令

save     list and copy dependencies into Godeps
go       run the go tool with saved dependencies
get      download and install packages with specified dependencies
path     print GOPATH for dependency code
restore  check out listed dependency versions in GOPATH
update   update selected packages or the go version
diff     shows the diff between current and previously saved set of dependencies
version  show version info
时间: 2025-01-07 14:20:22

godep 包管理工具的相关文章

Golang学习--包管理工具glide

上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依赖的库. php项目中使用composer,javascript项目中使用npm,那么在go项目中,我们需要使用什么? 包依赖工具的选择 当前go的包管理工具有glide.godep.govendor和gvt等,相关对比的文章可以查看<go依赖包管理工具对比>. 功能对比可以参考如下内容(虽然跟上

包管理工具rpm和yum的用法

包管理工具rpm和yum的用法 一.rpm的用法 rpm原本是Rde Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐收到其他发行版的采用,RPM套件管理方式的出现,让Linux易于安装.升级,间接提升了Linux的适用性. rpm用法:rpm [OPTION...] 1.rpm安装软件包,后面需要跟上程序包文件的绝对路径或相对路径 常用选项: -v:显示指令的执行过程 -vv:详细显示指令执行过程,便于排错 -h:以#号显示程

windows安装python包管理工具pip

windows安装python包管理工具pip     pip 是一个Python包管理工具,主要是用于安装 PyPI 上的软件包,可以替代 easy_install 工具. 一.前期准备 首先确认windows机器上面是否已经安装好了python.在cmd中输入python --version和python看看是否有反应 如上面所示,表示已经在windows平台上面搭建好了python环境. 二.下载安装 1.到官网去https://pypi.python.org/pypi/pip#downl

Node.js权威指南 (4) - 模块与npm包管理工具

4.1 核心模块与文件模块 / 574.2 从模块外部访问模块内的成员 / 58 4.2.1 使用exports对象 / 58 4.2.2 将模块定义为类 / 58 4.2.3 为模块类定义类变量或类函数 / 614.3 组织与管理模块 / 61 4.3.1 从node_modules目录中加载模块 / 61 4.3.2 使用目录来管理模块 / 62 4.3.3 从全局目录中加载模块 / 624.4 模块对象的属性 / 634.5 包与npm包管理工具 / 65 4.5.1 Node.js中的包

[转载]Python 包管理工具解惑

原文链接:http://zengrong.net/post/2169.htm Python 包管理工具解惑 python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到相当疑惑(嗯,是困惑).主要表现在下面几个方面: 这几个包管理工具有什么不同? distutils setuptools distribute disutils2 distlib pip 什么时候该用pip,什么时候该用 setup.py ,它们有关系么? easy_install.ez_setup

Python的包管理工具Pip

接触了Ruby,发现它有个包管理工具RubyGem非常好用,而且有非常完备的文档系统http://rdoc.info 发现Python下也有相同的工具,包含easy_install和Pip.只是,我没有细看easy_install的方法,这就简单的介绍一下Pip的安装与使用: 准备: $ curl -O http://python-distribute.org/distribute_setup.py $ python distribute_setup.py 安装: $ curl -O https

13个演示实例搞定RPM包管理工具

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. RPM是个什么东西? RPM以前是"RedHat Package Manager"的简称,现改为"RPM is Package Manager".在Linux/Unix操作系统上,RPM包管理工具允许系统管理员安装.更新.卸载.查询.验证和管理RPM包.下图为RPM包管理工具所具备的基本功能. 准备工作 为了更好的演示RPM包管理工具,我们需要将光盘镜像挂载到文件系

如何安装pip--python的包管理工具

pip是python的包管理工具,使用它来安装python的模块非常方便. pip支持的操作系统:Unix/Linux, OS X, and Windows. 支持的python版本:2.6, 2.7, 3.1, 3.2, 3.3, 3.4 安装pip: 下载get-pip.py文件 https://bootstrap.pypa.io/get-pip.py 执行 python get-pip.py 如果操作系统是ubuntu系列或则dabian 或Fedora可以使用操作系统的包管理器直接安装

Python包管理工具之间的关系

转自http://www.nowamagic.net/academy/part/13/302/ 当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils, 显得较为混乱. 而将来的工具链组合非常简单:pip + distutils2. 1. distutils : Python 自带的基本安装工具,适用于非常简单的应用场景,使用: 为项目创建 setup.py 脚本. 执行 setup.py install 可进行安装. 2.