1

On fedora 22, I found that all the standard go libraries aren't visible on the path for go.

NOTE I have indeed cleaned my system of golang - so I'm pretty sure it's not a mixed package versioning problem which often can happen when upgrading go.

NOTE The version of go I've installed is 1.4.2

I have been setting GOROOT=/usr/lib/golang, and GOPATH=(anything).

What internal directories in /usr/lib/golang should I look into to troubleshoot the missing libraries?

A simple example of the failures I'm getting are below...

[jay@rhbd gopath]$ go get github.com/golang/example/hello package github.com/golang/example/hello imports fmt: unrecognized import path "fmt" package github.com/golang/example/hello imports runtime: unrecognized import path "runtime"

and the corresponding go env:

GOHOSTOS="linux" GOOS="linux" GOPATH="/home/jay/gopath/" GORACE="" GOROOT="/usr/lib/golang" GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64" CC="gcc" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0" CXX="g++" CGO_ENABLED="1"

UPDATE

As per the comments in this thread... It looks like I don't have ANYTHING under /usr/lib/golang/src. Does this basically imply that my Go distribution is broken? If so maybe the Go binary should fail fast when this is the case... ?

4

1 回答 1

-1

TLDR

我的问题的最终解决方案如下(这可能是矫枉过正)。

yum erase golang-src

rm -rf /usr/lib/golang/

yum install golang-src golang

安装 golang-src 后,您应该确认在 GOROOT/src/ 下确实有几个用于所有标准 go 库的包,即下面列出的那些。

如何调查 Golang 安装的细节

显然:go get获取并安装您指定的源代码。大多数 go 库都使用标准库,比如ioorbytes等​​等。因此,一个很好的测试你的 go 发行版是否正确安装,并且你的 GOPATH 也已设置 - 是运行go get. 例如 go get github.com/golang/example/hello 足以暴露 GOROOT 标准库的缺陷。

首先要做的是检查安装中的 GOROOT 是什么。它可以通过 running 获得go env,这将为您提供所有 go 环境变量。

一般来说GOROOT下面应该有一个src/目录。但是,如果你有一个损坏的 go 包,那么其中一些库可能(由于某种原因)不在 GOROOT/src 下。也就是说,您应该在那里看到核心 go 内容的源目录,例如,来自健康工作的 go 安装。

ls /usr/lib/golang/src/ all.bash builtin/ compress/ errors/ html/ libbio/ Make.dist os/ run.bash strings/ time/ all.bat bytes/ ...... net/ regexp/ strconv/ text/

现在,回头看看我损坏的 go 安装,它看起来与上面的非常不同......看起来我在 /usr/lib/golang/src 下没有任何东西。这基本上意味着我的 go 包缺少一些非常重要的组件,几乎所有go get ...操作都会因此失败,因为 go 标准库都没有在 GOROOT 路径中。

如上所述——这里的最终解决方案是简单的 to yum erase golang-srcrm -rf /usr/lib/golang/然后是 and yum install golang-src golang

于 2015-06-15T23:57:55.433 回答