go install总是尝试使用GOROOT并且go gov下没有列出GOPATH

时间:2013-04-06 04:09:42

标签: go

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

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

$ 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 个答案:

答案 0 :(得分:4)

GOPATH and workspaces

$ 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

你得到什么输出?

答案 1 :(得分:1)

创建一个软链接,然后复制namespace other { void Foo::foo(data::Bar) { } } 中的 go 二进制文件,如下所示:

/usr/local

答案 2 :(得分: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中 - 但是上面的内容可能会帮助你专注于罪魁祸首(构建过程)。

答案 3 :(得分:0)

我认为很明显,在你的GOTOOLDIR中安装一切,GOTOOLDIR也与GOROOT有关:

  

你的:GOROOT =“/ usr / lib / go”

根据Document

  

安装Go工具

     

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

     

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

     

导出GOROOT = $ HOME / go

     

export PATH = $ PATH:$ GOROOT / bin

     

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

您应该按照以下步骤更改您的GOROOT,而不是GOPATH,然后一切都应该有效。

如果不起作用,也可以更改GOTOOLDIR。