登录
首页 >  Golang >  Go问答

PromQL 模块丢失

来源:stackoverflow

时间:2024-02-16 23:21:22 205浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《PromQL 模块丢失》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我尝试在这里使用 promql 包

package main

import (
    "fmt"    
    "github.com/prometheus/prometheus/promql/parser"
)

func main() {
    fmt.println("hello")
    parser.parseexpr("foobar")    
}

导入时遇到问题。这是错误:

没有所需的模块提供包 github.com/prometheus/prometheus/promql/parser;添加它: 去获取 github.com/prometheus/prometheus/promql/parser (编译)

我尝试按照建议运行 go get github.com/prometheus/prometheus/promql/parser 但失败。

去获取:找到模块 github.com/prometheus/prometheus@upgrade (v2.5.0+不兼容),但不包含包 github.com/prometheus/prometheus/promql/parser

这是我当前的 go.mod

module foo.com/bar/parser

go 1.17

require github.com/prometheus/prometheus v2.5.0+incompatible // indirect

正确答案


使用 go 获取 github.com/prometheus/prometheus@83032011a5d3e6102624fe58241a374a7201fee8 (该提交是此时的最新版本,v2.33.4)

需要这个的原因is that

这是 Go 模块的一个已知问题。 Prometheus 的语义版本控制将 Prometheus 的行为作为服务器进行版本控制,而不是将其代码作为库进行版本控制。通过将模块路径更改为 v2,我们建议 Prometheus 遵守 Go Modules 作为库的约定,但事实并非如此,即即使在次要版本中也可能会出现许多重大更改。

and

Prometheus 无意用作库。现在情况已经改变,即使我们不接受所有通用贡献,它也打算这样使用。

您看到的错误是因为 go get 默认情况下正在获取旧版本 v2.5.0,该版本于 2018 年发布,并且不包含 parser 软件包。发生这种情况是因为 Prometheus 使用的版本控制方案与 Go 假定的版本控制方案不一致。

请拨打 this issue 了解更多信息。

理论要掌握,实操不能落!以上关于《PromQL 模块丢失》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>