在本地目录中安装包
Posted
技术标签:
【中文标题】在本地目录中安装包【英文标题】:Installing packages in a local directory 【发布时间】:2012-09-12 21:39:57 【问题描述】:(带有go get...
的包)的最佳做法是什么?
示例:我想试用 Revel Web 框架,但我不想在 /usr/local/go
上安装我的 Go。
通常我会写在主页上的sudo go get github.com/robfig/revel
,但这会将其安装在/usr/local/go/src/pkg/...
下方。
有没有一种简单的方法可以说(例如)go get --local ...
并将包放在当前(子)目录中?
【问题讨论】:
很难选择接受哪个答案。目前我只玩过GOPATH
,所以@keks 的答案是我选择的答案,但将来可能会改变:)
【参考方案1】:
在启用现代模块的 go(在 go 1.11 中引入)中,您可以使用带有 GOBIN env var 的 gobin 程序来指定二进制文件的目标:
GOBIN=./local gobin github.com/robfig/revel
gobin的安装如下:
GO111MODULE=off go get -u github.com/myitcv/gobin
【讨论】:
【参考方案2】:您可能需要考虑使用Go Version Manager (gvm)。
除了在 Go 版本之间轻松切换之外,它还允许您在 pkgsets(“工作区”)之间切换。
首先你创建一个集合
gvm pkgset create myproject
然后你就用它
gvm pkgset use myproject
像魅力一样工作。
【讨论】:
【参考方案3】:要扩展 keks 答案,您可以将 .bashrc 更新为如下所示
export GOROOT=/usr/local/go
export GOPATH=~/workspace/me/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
现在使用go get
安装的所有软件包都与 go 发行版分开。
【讨论】:
【参考方案4】:您可以导出环境变量GOPATH
。对我来说是~/local/lib/go
。这个文件夹有子文件夹bin
、pkg
和src
,所以它就像/usr/local/go
。然后go
-tool 会自动下载、构建和安装包到这个目录。
【讨论】:
以上是关于在本地目录中安装包的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Yarn 工作区的一个 package.json 文件中安装包?