最近开源的Prometheus解决方案kvass go mod报错解决
总览最进开源的Prometheus解决方案kvass go mod报错解决环境复现步骤报错展示报错分析解决后续最进开源的Prometheus解决方案kvass go mod报错解决最近在研究kvass项目,在里面做了一些调整后进行go build时报错,主要是go mod的依赖管理问题,报错和解决思路如下环境ubuntu18.04go 1.14k8s 1.15.1复现步骤git clone htt
·
最进开源的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源码进行分析,敬请期待
更多推荐
已为社区贡献11条内容
所有评论(0)