微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法让Golang在Ubuntu上工作

好的,所以我已经下载了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

比我find.bashrc ,并尝试:

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

但我不能得到它编译或安装任何依赖关系。 例如。 我尝试运行我的小testing程序:

debugging督察显示奇怪的字符?

如何通过Go请求Windows上的pipe理权限

如何在Windows系统上testingApp Engine项目?

如何在Google Golang中获取Windows的系统根目录?

Golang:调用Windows DLL函数

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上编译和工作正常。 我不知道什么是我的configuration错了,如果我试图删除$GOROOT或$GOPATH没有任何作品,我不知道还有什么其他设置,除了去的path。

编辑:我的Mac上没有设置$ GOROOT。 但是,如果我在Ubuntu上删除$GOROOT ,当我尝试编译时会遇到类似这样的错误

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

如何使用Nginx和Go来创build子域?

如何使用读取系统调用以交互方式取得密码

如何正确启动一个将使用Go守护进程的进程?

Google Go Win:找不到导入“http”

去:HTTP静态目录不被服务

您设置的环境变量

$ 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添加到shell的路径中。

例如,如果您将tar文件解压缩到$ HOME / go中,则可以将以下内容放在.profile中:

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

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

由此可见,你必须没有正确地遵守上述指示。 解决这个问题,我希望它会为你工作。

要安装在Ubuntu上先删除事先安装…

type go # see if go is installed

如果安装了典型的输出

go is hashed (/usr/local/go/bin/go)

如果去安装删除

sudo rm -rf /usr/local/go

看看你是否安装了任何golang ubuntu软件包

dpkg -l|grep golang # if you see any,run following cmd to remove sudo apt-get remove --purge golang-*

下载最新的tarball https://golang.org/dl/展开并安装

cd /tmp wget https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz

在〜/ .bashrc中定义这些环境变量

export GOROOT=/usr/local/go export PATH=${GOROOT}/bin:${PATH} export GOPATH=${HOME}/other_src/gopath # typical value change at will export PATH=${GOPATH}/bin:${PATH}

源你的上面新的env var定义

source ~/.bashrc

验证安装

go version

如果安装正确的典型输出

go version go1.9.2 linux/amd64

安装完成,让编译一个你好世界

[[ ! -d $GOPATH ]] && mkdir $GOPATH # if dir does not exist create it cd $GOPATH mkdir {bin,pkg,src} # see below link for details cd src mkdir -p github.com/mygithubname/play cd github.com/mygithubname/play

现在粘贴以下内容以创建go源文件hello_world.go

tee hello_world.go << WOW package main import "fmt" func main() { fmt.Printf("hello,worldn") } WOW

编译你的源代码

go build hello_world.go ./hello_world # run your executable

你好,世界

了解如何构建您的go源代码,请参阅https://golang.org/doc/code.html

修复丢失的包错误

您还问了如何解决缺少的依赖性错误…例如

scott@rapacIoUs ~/other_src/gopath/src/github.com/bigeagle/gohop $ go build hop/cipher.go:27:2: cannot find package "github.com/golang/snappy" in any of: /usr/local/go/src/github.com/golang/snappy (from $GOROOT) /home/scott/other_src/gopath/src/github.com/golang/snappy (from $GOPATH) internal/logging.go:6:2: cannot find package "github.com/op/go-logging" in any of: /usr/local/go/src/github.com/op/go-logging (from $GOROOT) /home/scott/other_src/gopath/src/github.com/op/go-logging (from $GOPATH)

上面的错误会发生,即使你去安装安装好后…只是发出这个下载并安装缺少上游依赖去包(和他们也可能引用递归)

go get -v -t ./... # -v verbose # -t also download any test only packages

TLDR:通过在您的终端export GOROOT=""

我已经安装在Ubuntu 16.04上,一切工作正常。

然后我错误地将$GOROOT设置为$GOROOT ,在这之后,我的构建开始失败,说:

warning: GOPATH set to GOROOT has no effect cannot find package "fmt" in any of: ... (from $GOROOT) ($GOPATH not set) cannot find package "io/IoUtil" in any of: imports runtime: cannot find package "runtime" in any of: /home/mhsn/go/src/runtime (from $GOROOT) ($GOPATH not set)

我读的每个解决方案都是建议不要设置这个变量,我想解决这个问题。 我找到了下面的修复方法来取消它:在bash中export GOROOT="" 。

把$GOROOT回到每个人都推荐的空白处,这样就可以回到原来的路径。 它解决了我的问题,并开始建设开始工作了。

你不应该为正常安装设置$ GOROOT。

只需输入export GOROOT="" ,它应该可以解决你的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐