最近开源的Prometheus解决方案kvass go mod报错解决

最进开源的Prometheus解决方案kvass go mod报错解决

最近在研究kvass项目,在里面做了一些调整后进行go build时报错,主要是go mod的依赖管理问题,报错和解决思路如下

环境

ubuntu18.04
go 1.14
k8s 1.15.1

复现步骤

git clone https://github.com/tkestack/kvass.git
cd kvass
go build -o main  cmd/kvass/*.go

报错展示

root@ubuntu:/workspace/gospace/kvass# go build -o maincmd/kvass/*.go 
/root/go/pkg/mod/github.com/prometheus/prometheus@v0.0.0-20200507164740-ecee9c8abfd1/prompb/rpc.pb.go:13:2: 
/root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20200420144010-e5e8543f8aeb/googleapis/api/annotations/annotations.pb.go:1:1: expected 'package', found 'EOF'
/root/go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.14.4/runtime/marshal_httpbodyproto.go:4:2: 
/root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20200420144010-e5e8543f8aeb/googleapis/api/httpbody/httpbody.pb.go:1:1: expected 'package', found 'EOF'
/root/go/pkg/mod/google.golang.org/grpc@v1.32.0/status/status.go:34:2: 
/root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20200420144010-e5e8543f8aeb/googleapis/rpc/status/status.pb.go:1:1: expected 'package', found 'EOF'
/root/go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.14.4/runtime/fieldmask.go:10:2: 
/root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20200420144010-e5e8543f8aeb/protobuf/field_mask/field_mask.pb.go:1:1: expected 'package', found 'EOF'

报错分析

报错expected 'package', found 'EOF'基本上是由于go mod下载依赖时没有把某些包下载完整导致,cat 一下报错的包,发现里面为空

root@ubuntu:/workspace/gospace/kvass# cat /root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20200420144010-e5e8543f8aeb/googleapis/api/annotations/annotations.pb.go
root@ubuntu:/workspace/gospace/kvass# 

解决

更新一下报错的包

go get xxx

go get后若还存在该问题,使用replace指定版本来代替报错的版本

google.golang.org/genproto => google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d

若还不行,有一种比较暴力的办法(非首选,正式环境慎用),去报错的包对应的github仓库下找到对应版本的代码,复制到空白的xxx.go文件即可

最终完整可用的go.mod如下

module tkestack.io/kvass

go 1.14

require (
	github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 // indirect
	github.com/gin-contrib/pprof v1.3.0
	github.com/gin-gonic/gin v1.6.3
	github.com/go-kit/kit v0.10.0
	github.com/golang/protobuf v1.4.2 // indirect
	github.com/pkg/errors v0.9.1
	github.com/prometheus/common v0.9.1
	github.com/prometheus/prometheus v1.8.2
	github.com/sirupsen/logrus v1.7.0
	github.com/spf13/cobra v1.1.1
	github.com/stretchr/testify v1.5.1
	github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 // indirect
	go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738
	golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9
	google.golang.org/grpc v1.32.0 // indirect
	gopkg.in/yaml.v2 v2.2.8
	k8s.io/api v0.17.5
	k8s.io/apimachinery v0.17.5
	k8s.io/client-go v0.17.5
)

replace (
    github.com/prometheus/prometheus => github.com/prometheus/prometheus v0.0.0-20200507164740-ecee9c8abfd1
    google.golang.org/genproto => google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d
)

后续

后续会对kvass源码进行分析,敬请期待
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值