登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  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删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>