去"无法识别的进口"

时间:2015-06-15 21:14:17

标签: go godeps

在fedora 22上,我发现所有标准的go库在go的路径上都不可见。

注意我确实已经清理了golang系统 - 所以我非常确定它不是一个混合包版本控制问题,升级时经常会发生这种问题。

注意我安装的版本是1.4.2

我一直在设置GOROOT = / usr / lib / golang,GOPATH =(任何东西)。

我应该调查/ usr / lib / golang中的哪些内部目录来解决丢失的库?

我遇到的失败的一个简单例子如下......

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"

和相应的go env:

a1.sources = r1 a1.sources.r1.hnadler = org.apache.flume.source.http.JSONHandler

更新

根据这个帖子中的评论...看起来我在/ usr / lib / golang / src下没有任何东西。这基本上意味着我的Go发行版已被破坏吗?如果是这样的话,在这种情况下,Go二进制文件可能会快速失败......?

1 个答案:

答案 0 :(得分:-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库使用标准库,如iobytes等。因此,一个很好的测试,你的go分发正确安装,并且你的GOPATH也设置 - 是运行go get。例如,go get github.com/golang/example/hello足以暴露GOROOT标准库的缺陷。

要做的第一件事就是检查你的装置中开箱即用的GOROOT。它可以通过运行go env来获得,它将为您提供所有环境变量。

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

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/

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

如上所述 - 最终解决方案只是yum erase golang-srcrm -rf /usr/lib/golang/,然后是yum install golang-src golang