Golang源码构建Grafana时遇到的错误
Golang源码构建Grafana时遇到的错误 你好!
我正在尝试在 Windows 10 (64位) 上从源代码构建 Grafana,但不幸地遇到了以下错误。

有人知道问题出在哪里吗?
此致
尝试运行 make 时出现的错误很可能就是问题的一部分。你安装 make 了吗?抱歉,我不使用 Windows,所以在这方面可能帮不上太多忙。
更多关于Golang源码构建Grafana时遇到的错误的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
您也可以向 Grafana 社区的人咨询,因为在我看来,这似乎不是一个特定的 Go 问题,而是一个让 Grafana 构建运行起来的问题。谢谢!抱歉我没能提供更多帮助。
你可以尝试在Cygwin环境下构建:似乎缺少一些必需的常用工具,例如tr和grep。如果我没记错的话,微软也有一个“find”命令,这可能是导致失败的原因。
我曾经在Cygwin下构建过控制台级别的应用程序,这些程序也能在云端运行并镜像输出(除了某些浮点数问题),没有遇到任何问题。但我没有构建过图形界面的包,那可能需要一些MinGW的技巧。
我将Go语言版本从1.20降级到1.14,幸运的是,我不再看到上述错误,但出现了与go-sqlite版本相关的问题,我附上截图供您参考。

为了方便您更好地分析,我提供以下指向我的go.mod文件的链接。
再次致意
你好,感谢你的回复!
我已经检查过 Grafana 的构建说明,不幸的是,我遇到了与以下链接中提到相同的问题:Grafana 从源代码构建错误(未定义:server.Initialize)- #8 by zahrazare313 - 安装 - Grafana Labs 社区论坛
Wire 工具已安装在 $GOPATH/bin/wire.exe,并且此路径也已添加到我的系统环境变量中。

有什么可以帮助我的想法吗?
此致
我按照说明安装了Cygwin(C:\cygwin64),然后遇到了以下错误。

此外,我从Grafana支持团队那里得到的反馈并非预期的结果,因为他们只为商业解决方案提供工单支持。

很遗憾,我不得不再说一遍,对此表示抱歉。有没有人通过其他操作系统编译过,然后专门通过Go环境变量为Windows(32位版本)构建它?
我认为这会对我有很大帮助!
此致
我终于成功通过Cygwin无问题地运行了 make gen-go 命令,这得益于对 Variables.mk 的以下提示:
Chore: Update developer guide with instructions building from Windows
我已经通过 make gen-go 生成了以下文件 (wire-ν0.5.0)

不幸的是,由于以下错误,我无法继续执行后续步骤:

当然,仍然是同样的错误:

有什么想法吗?
致意
我刚刚为Windows安装了make
但在Windows 10上仍然遇到相同的错误(Grafana building from source error (undefined: server.Initialize) - #7 by tomschirgi - Installation - Grafana Labs Community Forums)

make gen-go
我收到错误:未找到文件 *.sh。 process_begin: CreateProcess(NULL, # Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies., …)
我肯定会向Grafana团队发送反馈,但我不确定根据博客文章的内容!
有没有人通过其他操作系统编译过它,然后专门通过Go环境变量为Win(32位版本)构建它?我认为这会对我有很大帮助!

此致
根据你提供的错误信息,这是一个典型的Go模块代理访问问题。错误显示go mod download阶段无法从代理服务器获取依赖包,具体是golang.org/x/sys包获取失败。
主要原因是默认的Go代理(proxy.golang.org)在中国大陆访问不稳定或受限。以下是解决方案:
解决方案:更换Go模块代理
在构建前,设置国内可访问的Go模块代理:
方法1:临时设置环境变量(推荐)
# Windows PowerShell
$env:GOPROXY = "https://goproxy.cn,direct"
$env:GONOSUMDB = "*"
# 或者使用阿里云代理
$env:GOPROXY = "https://mirrors.aliyun.com/goproxy/,direct"
方法2:永久配置
# 设置永久环境变量
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GONOSUMDB=*
方法3:在构建命令中直接指定
# 使用代理构建Grafana
GOPROXY=https://goproxy.cn go run build.go build
完整构建示例
# 1. 设置代理
$env:GOPROXY = "https://goproxy.cn,direct"
# 2. 清理旧的依赖缓存(可选)
go clean -modcache
# 3. 进入Grafana源码目录
cd C:\path\to\grafana
# 4. 下载所有依赖
go mod download
# 5. 开始构建
go run build.go build
如果问题仍然存在
尝试关闭Go模块校验:
$env:GOSUMDB = "off"
$env:GOPROXY = "https://goproxy.cn,direct"
# 然后重新构建
go run build.go build
验证代理设置
检查当前代理配置:
go env GOPROXY
正确配置后应该显示:
https://goproxy.cn,direct
这个问题不是Grafana特有的,而是Go模块代理的可访问性问题。更换为国内代理后应该能正常下载依赖并完成构建。


