如何使用go get安装软件包?


Answers:


120

命令去

下载并安装软件包和依赖项

用法:

go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [packages]

Get下载由导入路径命名的包及其依赖项。然后,它将安装命名的软件包,例如“ go install”。

-d标志指示下载软件包后停止;也就是说,它指示不要安装软件包。

-f标志仅在设置了-u时才有效,它强制-u不验证每个软件包是否已从其导入路径所隐含的源代码控制存储库中检出。如果源是原始文件的本地派生,这将很有用。

-fix标志指示在解决依赖关系或构建代码之前,先对下载的软件包运行修复工具。

-insecure标志允许使用非安全方案(例如HTTP)从存储库中获取信息并解析自定义域。请谨慎使用。

-t标志指示还可以下载为指定软件包构建测试所需的软件包。

-u标志指示获取使用网络更新命名软件包及其依赖关系的信息。默认情况下,get使用网络来检查丢失的软件包,但不使用它来查找现有软件包的更新。

-v标志启用详细进度和调试输出。

Get还接受构建标志来控制安装。请参阅“建立帮助”。

签出新软件包时,get将创建目标目录GOPATH / src /。如果GOPATH包含多个条目,则get使用第一个条目。有关更多详细信息,请参见:'go help gopath'。

在签出或更新软件包时,get查找与本地安装的Go版本匹配的分支或标记。最重要的规则是,如果本地安装正在运行版本“ go1”,请获取搜索名为“ go1”的分支或标记的步骤。如果不存在这样的版本,它将获取软件包的默认分支。

当go get签出或更新Git存储库时,它还会更新该存储库引用的所有git子模块。

永远不要检出或更新存储在供应商目录中的代码。

有关指定软件包的更多信息,请参见“转到帮助软件包”。

有关“获取”如何找到要下载的源代码的更多信息,请参见“获取帮助importpath”。

本文介绍了使用GOPATH管理源代码和依赖项时get的行为。相反,如果go命令以模块感知模式运行,则get的标志和效果的详细信息会更改,“ go help get”也会更改。请参阅“前往帮助模块”和“前往帮助模块-获取”。

另请参阅:进行构建,进行安装,进行清洁。


例如,显示详细输出,

$ go get -v github.com/capotej/groupcache-db-experiment/...
github.com/capotej/groupcache-db-experiment (download)
github.com/golang/groupcache (download)
github.com/golang/protobuf (download)
github.com/capotej/groupcache-db-experiment/api
github.com/capotej/groupcache-db-experiment/client
github.com/capotej/groupcache-db-experiment/slowdb
github.com/golang/groupcache/consistenthash
github.com/golang/protobuf/proto
github.com/golang/groupcache/lru
github.com/capotej/groupcache-db-experiment/dbserver
github.com/capotej/groupcache-db-experiment/cli
github.com/golang/groupcache/singleflight
github.com/golang/groupcache/groupcachepb
github.com/golang/groupcache
github.com/capotej/groupcache-db-experiment/frontend
$ 

17
如果这可以帮助任何人,则我的问题(package github.com/coreos/go-iptables.git: invalid version control suffix in github.com/ path)的解决方案是.git从Github URL中删除后缀。
神剑

6
怎么-v办?
洋健

3
@yuyangJian表示详细输出。
omrsin

3
爱怎么-v命令不在该列表中引用的笑FML ......想必这意味着冗长寿
亚历山大·米尔斯

2
用完后如何运行go get
acjay

75

首先,我们需要GOPATH

$GOPATH是由它的环境变量指定的文件夹(或一组文件夹的)。我们必须注意,这不是$GOROOTGo的安装目录。

export GOPATH=$HOME/gocode
export PATH=$PATH:$GOPATH/bin

我们~/gocode在计算机中使用路径来存储应用程序的源代码及其依赖项。该GOPATH目录还将存储其软件包的二进制文件。

然后检查转到环境

您的系统必须具有$GOPATH$GOROOT,以下是我的Env:

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/elpsstu/gocode"
GORACE=""
GOROOT="/home/pravin/go"
GOTOOLDIR="/home/pravin/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

现在,您运行download go软件包:

go get [-d] [-f] [-fix] [-t] [-u] [build flags] [packages]

下载并安装由导入路径命名的软件包及其依赖项。有关更多详细信息,请参见此处


1
我的出行环境已经可以了,但是我不熟悉的规则go get,所以github.com:capotej/groupcache-db-experiment.git不是非法的,合法的道路是什么?
罗杰

2
尝试去获取-v github.com/capotej/groupcache-db-experiment / ...,就像@peterSO所说的那样
Pravin Mishra

1
从Go v1.8开始,如果未设置,则GOPATH默认为$HOME/go。源12
Manavalan Gajapathy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.