go install 总是尝试使用 GOROOT 并且 GOPATH 未在 go env 下列出

我遇到了一个非常令人沮丧的问题GOPATH,尽管设置在 中,但.profile在调用时没有出现go env,并且似乎没有影响go install目标位置。


我试图使用go install安装软件包,并正在此错误,这清楚地表明,它正试图安装的/usr/lib/go,而不是预期的目录/home/me/dev/go。


$ go install github.com/songgao/colorgo

go install github.com/songgao/go.pipeline: mkdir /usr/lib/go/pkg/linux_386/github.com: permission denied

go env 给出以下结果。


$ go env

GOROOT="/usr/lib/go"

GOBIN=""

GOARCH="386"

GOCHAR="8"

GOOS="linux"

GOEXE=""

GOHOSTARCH="386"

GOHOSTOS="linux"

GOTOOLDIR="/usr/lib/go/pkg/tool/linux_386"

GOGCCFLAGS="-g -O2 -fPIC -m32 -pthread"

CGO_ENABLED="1"

但它肯定是设置的。


$ echo $GOPATH

/home/me/dev/go

更新:我已经导出了 GOPATH~/.profile并获取了它,但我仍然遇到同样的问题。


$ export GOPATH=/home/me/dev/go

$ go env

GOROOT="/usr/lib/go"

GOBIN=""

GOARCH="386"

GOCHAR="8"

GOOS="linux"

GOEXE=""

GOHOSTARCH="386"

GOHOSTOS="linux"

GOTOOLDIR="/usr/lib/go/pkg/tool/linux_386"

GOGCCFLAGS="-g -O2 -fPIC -m32 -pthread"

CGO_ENABLED="1"

再次更新:自从我升级到 go1.1beta2 后,此问题已停止。我不确定出了什么问题,因为GOPATH似乎设置正确,但现在显然一切正常。


料青山看我应如是
浏览 230回答 3
3回答

函数式编程

GOPATH 和工作区$ mkdir -p $HOME/dev/go/src$ mkdir -p $HOME/dev/go/bin在$HOME/.profile:export GOPATH=$HOME/dev/go:export PATH=$PATH:$HOME/dev/go/bin然后重新启动或注销并登录。登录后,首先运行:$ env | grep -i '^GO'GOPATH=/home/me/dev/go$ cat $HOME/.profile你得到什么输出?

收到一只叮咚

创建一个软链接,然后复制go二进制文件/usr/local如下:# ln -sf /usr/local/go/bin/go /usr/bin/go

湖上湖

当您提供设置 GOPATH 的证据时,您问题的第二部分 - GOPATH 未在 go env 下列出 - 可能是由您安装的版本的“go env”引起的。go1 (linux) 和 go1.0.2 (windows) 版本的“go env”都不显示 GOPATH。如果你看一下源(GOROOT / src目录/ CMD /去/ env.go),你会发现就在顶部元素显示(mkEnv)与GOROOT开始,并列表中不包含GOPATH。版本 go1.0.3 (windows) 确实显示 GOPATH;但是,源中的相应列表以 GOARCH 开头。我承认这并不能解决您问题的第一部分——(试图)安装到 GOROOT 中——但也许以上内容可以帮助您专注于罪魁祸首(构建过程)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go