【问题标题】: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 的答案是我选择的答案,但将来可能会改变:)

标签: installation package go local


【解决方案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。这个文件夹有子文件夹binpkgsrc,所以它就像/usr/local/go。然后go-tool 会自动下载、构建和安装包到这个目录。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-23
          • 1970-01-01
          • 1970-01-01
          • 2015-12-21
          • 2011-10-27
          • 2021-10-31
          相关资源
          最近更新 更多