【问题标题】:'go install' trying to install to /usr/lib/go instead of my GOPATH. Permission denied'go install' 试图安装到 /usr/lib/go 而不是我的 GOPATH。没有权限
【发布时间】:2016-07-06 22:01:27
【问题描述】:

我在 Linux Mint 14 上正确启动和运行 Go 时遇到了一些困难。我有一个文件夹 ($HOME/develop/gocode),其中包含 binpkgsrc 文件夹作为我的 GOPATH 和在那里正确设置GOPATH 环境变量。我尝试使用go get (https://github.com/jbarham/primegen.go) 安装某个 github 存储库,但 Go 给了我错误:stat github.com/jbarham/primegen.go: no such file or directory(我认为是因为存储库以 .go 结尾。)很好,我只是手动克隆它,但是当我尝试 go install 该存储库中的两个可执行文件之一(两个都不起作用,但我尝试先安装 primespeed)我收到以下错误:

$ cd $GOPATH/src/github.com/jbarham/primegen.go/primespeed
$ go install
go install github.com/jbarham/primegen.go: mkdir /usr/lib/go/pkg/linux_amd64/github.com: permission denied

为什么要去那里安装软件包?我已经明确设置了我的 GOPATH 变量,但它却试图将软件包安装到 /usr/local。

我不确定它是否会有所帮助,但这里有一些关于版本和环境的其他输出:

$ go env
GOROOT="/usr/lib/go"
GOBIN=""
GOARCH="amd64"
GOCHAR="6"
GOOS="linux"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"
$ go version
go version go1.0.2

【问题讨论】:

  • 有什么可疑的——为什么GOPATH 没有出现在您的go env 输出中?
  • 你“导出 GOPATH”了吗?

标签: go


【解决方案1】:
export GOPATH=$HOME/go

export GOBIN=$HOME/go/bin

试试看。

【讨论】:

    【解决方案2】:
    1. 您的 GOPATH 可能未导出。
    2. 是的,具有.go 扩展名的存储库不是“可获取的”。

    广告 1.(最好放入 .bashrc 或等效文件):

    $ export GOPATH=$HOME # just an example
    

    广告 2.(最好提出 issue 关于无意义的存储库名称):

    $ mkdir -p $GOPATH/src/github.com/jbarham
    $ cd $GOPATH/src/github.com/jbarham
    $ git clone https://github.com/jbarham/primegen.go.git
    $ cd primegen.go
    $ go install
    

    【讨论】:

    • 不幸的是,情况似乎并非如此。我肯定已经导出了 GOPATH 并且可以go install 其他包就好了。我只是假设包末尾的“.go”是导致错误的原因。也许有一天我会更多地了解幕后发生的事情,找出罪魁祸首并为它提交补丁。至于现在,我已经转移到其他项目以满足我对 Go 的好奇心。感谢您的帮助。
    • 这很奇怪,当我执行go env 时,会列出GOPATH。我在上面的输出中看不到它。
    【解决方案3】:

    我遇到了同样的问题,但发现对于某些存储库,您需要专门添加导出 GOPATH。例如来自我的GOPATH

    cd $GOPATH
    export GOPATH=$PWD && go get -d github.com/nsf/gocode
    

    如果你给它起别名,我猜你可以一起避免它:

    alias goget='cd $GOPATH; export GOPATH=$PWD && go get' 
    

    这并不完美,奇怪的是export GOPATH=$GOPATH 不起作用。 出于某种原因,一些 repos 正在将 GOPATH 重置为 $HOME 并尝试以不同的用户身份执行。 我的猜测是 go get 方法中某处的一些开发代码会干扰调用。 [只是一种预感,不要引用我的话]

    【讨论】:

      猜你喜欢
      • 2012-09-13
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      相关资源
      最近更新 更多