19

go get...在本地目录中安装包(带有 的包)的最佳做法是什么?

示例:我想试用Revel Web 框架,但我不想在/usr/local/go.

通常我会说sudo go get github.com/robfig/revel写在主页上,但这会将它安装在/usr/local/go/src/pkg/....

有没有一种简单的方法可以说(例如)go get --local ...并将包放在当前(子)目录中?

4

4 回答 4

24

要扩展 keks 答案,您可以将 .bashrc 更新为如下所示

export GOROOT=/usr/local/go
export GOPATH=~/workspace/me/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

现在安装的所有软件包go get都与 go 发行版分开。

于 2012-09-20T14:15:19.020 回答
14

您可以导出环境变量GOPATH。对我来说是~/local/lib/go。这个文件夹有子文件夹bin,pkgsrc, 所以它就像/usr/local/go. -toolgo会自动下载、构建和安装包到这个目录。

于 2012-09-20T13:55:09.473 回答
10

您可能需要考虑使用Go Version Manager (gvm)

除了在 Go 版本之间轻松切换之外,它还允许您在pkgsets(“工作区”)之间切换。

首先你创建一个集合

gvm pkgset create myproject

然后你用它

gvm pkgset use myproject

奇迹般有效。

于 2013-07-12T14:17:57.500 回答
1

在启用现代模块的 go(在 go 1.11 中引入)中,您可以将gobin程序与 GOBIN env var 一起使用,以指定二进制文件的目标:

GOBIN=./local gobin github.com/robfig/revel

gobin的安装如下:

GO111MODULE=off go get -u github.com/myitcv/gobin
于 2019-01-24T17:07:52.767 回答