一尘不染

无法让Golang在Ubuntu中工作

go

好的,所以我下载了Go 1.1,并将其放入$ HOME / Documents / go。

然后,我将我修改.bashrc为:

export GOPATH=$HOME/Documents/go                                                
export GOROOT=$GOPATH
export GOARCH=amd64
export GOOS=linux
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

比起我,我已经.bashrc尝试了:

jan@janpc:~$ go version
go version go1.1 linux/amd64

但是我无法编译或安装任何依赖项。例如。我尝试运行我的小测试程序:

jan@janpc:~/Documents/go/src/github.com/jan/scrypt$ go run scrypt.go 
warning: GOPATH set to GOROOT (/home/jan/Documents/go) has no effect
scrypt.go:9:3: cannot find package "github.com/dchest/scrypt" in any of:
    /home/jan/Documents/go/src/pkg/github.com/dchest/scrypt (from $GOROOT)
    ($GOPATH not set)
jan@janpc:~/Documents/go/src/github.com/jan/scrypt$

当我尝试安装依赖项时:

jan@janpc:~/Documents/go/src/github.com/jan/scrypt$ go get "github.com/dchest/scrypt"
warning: GOPATH set to GOROOT (/home/jan/Documents/go) has no effect
package github.com/dchest/scrypt: cannot download, $GOPATH must not be set to $GOROOT. For more details see: go help gopath

它可以在Mac上编译并正常工作。如果我尝试删除配置$GOROOT$GOPATH什么都行不通,并且我不知道将它们设置为什么,除了Go的路径,我无法弄清楚我的配置有什么问题。

编辑:我的Mac上没有设置$ GOROOT。但是,如果我$GOROOT在ubuntu上删除,则在尝试编译时会出现诸如此类的错误。

cannot find package "fmt" in any of:
    /usr/local/go/src/pkg/fmt (from $GOROOT)
    /home/jan/Documents/go/src/fmt (from $GOPATH)

阅读 203

收藏
2020-07-02

共1个答案

一尘不染

您设置的环境变量

$ export GOROOT=$GOPATH

是一个错误。无需或不建议在任何地方进行此类设置。实际上,它破坏了Go构建系统所看到的环境。

删除该设置,重新创建环境(. bashrc)或打开一个新的终端,它应该可以工作(如果不存在其他问题)。

此外,如果您不进行交叉编译,建议您也删除以下内容:

export GOARCH=amd64
export GOOS=linux

简而言之,正确导出的GOPATH是 唯一
真正需要的环境变量。这里还有一些提示。

编辑:好的,所以我已经下载了二进制发行版(go1.1.linux-amd64.tar.gz)。从README引用:


二进制发行说明

如果刚刚解压了二进制Go发行版,则需要将环境变量$ GOROOT设置为go目录的完整路径(包含此README的路径)。如果将变量解压缩到/ usr /
local / go中,或者通过运行all.bash从源进行重建,则可以忽略该变量(请参阅doc /
install.html)。您还应该将Go二进制目录$ GOROOT / bin添加到外壳程序的路径中。

例如,如果将tar文件提取到$ HOME / go中,则可以在.profile中放入以下内容:

export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin

有关更多详细信息,请参见doc / install.html。


由此可见,您一定没有正确遵循上述说明。解决该问题,希望它对您有用。

2020-07-02