【发布时间】:2015-06-15 21:14:16
【问题描述】:
在 fedora 22 上,我发现所有标准的 go 库在 go 的路径上都不可见。
注意我确实清理了我的 golang 系统 - 所以我很确定这不是升级 go 时经常发生的混合包版本控制问题。
注意我安装的go版本是1.4.2
我一直在设置 GOROOT=/usr/lib/golang 和 GOPATH=(anything)。
我应该查看 /usr/lib/golang 中的哪些内部目录来解决缺少的库的问题?
下面是我遇到的失败的一个简单示例...
[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"
以及对应的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"
更新
根据该线程中的 cmets... 看起来我在 /usr/lib/golang/src 下没有任何内容。这是否基本上意味着我的 Go 发行版被破坏了?如果是这样,在这种情况下,Go 二进制文件可能会很快失败......?
【问题讨论】:
-
你是如何安装 Go 的?如果从源安装,不要设置
GOROOT。 -
我在有和没有 GOROOT 的情况下都试过这个。我可以使用哪些技巧来真正检查问题?为什么 GOROOT 会破坏局势?
-
我不知道要解决什么问题,因为我不知道您是如何来到这里的。如果您使用官方二进制安装,您所做的只是解压缩 tarball,并设置适当的变量。 您使用了哪些步骤来安装 Go?
-
yum 安装 golang(fedora 软件包)。但是,通常不应该有一种方法可以让您看到去哪里寻找包裹,以确认/否认它们的存在吗?通常在 Java 世界中,我们可能会使用 System.getProperties 来打印类路径中的所有 jar,然后一一查看包。我假设在 golang 中可能有类似的低级方法来手动查找在运行时提供给程序的包?
-
你几乎从不使用
GOROOT,因为它被嵌入到编译的go工具中,并且设置为almost always a mistake。没有“低级”的方式来查找包——只有两个地方可以查看GOROOT和GOPATH。 Go 标准库源代码应位于$GOROOT/src。