10

我有一个非常令人沮丧的问题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似乎设置正确,但现在显然一切正常。

4

4 回答 4

4

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

你得到什么输出?

于 2013-04-06T04:16:14.383 回答
1

创建一个软链接,然后将go二进制文件复制/usr/local如下:

# ln -sf /usr/local/go/bin/go /usr/bin/go
于 2016-04-29T12:14:35.403 回答
0

当您提供设置 GOPATH 的证据时,您问题的第二部分 - GOPATH 未在 go env 下列出 - 可能是由您安装版本的“go env”引起的。go1 (linux) 和 go1.0.2 (windows) 版本的“go env”都不显示 GOPATH。如果您查看源代码 (GOROOT/src/cmd/go/env.go),您会在顶部找到要显示的元素列表 (mkEnv),它以 GOROOT 开头并且不包含GOPATH。

版本 go1.0.3 (windows) 确实显示 GOPATH;但是,源中的相应列表以 GOARCH 开头。

我承认这并不能解决你问题的第一部分——(试图)安装到 GOROOT 中——但也许上面的内容会帮助你专注于罪魁祸首(构建过程)。

于 2013-04-06T16:59:46.540 回答
0

我认为很明显,在你的 GOTOOLDIR 中安装所有内容,GOTOOLDIR 也与 GOROOT 相关:

你的:GOROOT="/usr/lib/go"

根据文件

安装 Go 工具

Go 二进制发行版假定它们将安装在 /usr/local/go(或 Windows 下的 c:\Go)中,但也可以将它们安装在不同的位置。如果这样做,则需要在使用 Go 工具时将 GOROOT 环境变量设置为该目录。

例如,如果您将 Go 安装到您的主目录,您应该将以下命令添加到 $HOME/.profile:

导出 GOROOT=$HOME/go

导出 PATH=$PATH:$GOROOT/bin

Windows 用户应阅读有关在 Windows 下设置环境变量的部分。

您应该按照这些步骤来更改您的 GOROOT,而不是 GOPATH,然后一切都应该工作。

如果它不起作用,请同时更改 GOTOOLDIR。

于 2013-04-09T07:30:45.193 回答