好的,所以我已经下载了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的系统根目录?
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] 举报,一经查实,本站将立刻删除。