gpt4 book ai didi

Go Modules : finding out right pseudo-version (vX. Y.Z--) 所需包

转载 作者:IT王子 更新时间:2023-10-29 01:14:29 31 4
gpt4 key购买 nike

我正在试用 Go 模块。我的项目需要库 golang.org/x/net/html,所以我定义了这个 go.mod 文件:

module github.com/patrickbucher/prettyprint

require golang.org/x/net/html

并编写了这个演示程序来检查编译时是否加载了依赖项:

package main

import (
"fmt"
"log"
"os"

"golang.org/x/net/html"
)

func main() {
doc, err := html.Parse(os.Stdin)
if err != nil {
log.Fatal(err)
}
fmt.Println(doc)
}

当我运行 go build 时,我收到此错误消息:

go: errors parsing go.mod:
~/prettyprint/go.mod:3: usage: require module/path v1.2.3

显然,我错过了版本号。但是拿哪一个呢?我偶然发现了一篇名为 Takig Go Modules for a Spin 的文章,我在其中找到了一个包含对 golang.org/x 包的引用的 go.mod 文件示例:

module github.com/davecheney/httpstat

require (
github.com/fatih/color v1.5.0
github.com/mattn/go-colorable v0.0.9
github.com/mattn/go-isatty v0.0.3
golang.org/x/net v0.0.0-20170922011244-0744d001aa84
golang.org/x/sys v0.0.0-20170922123423-429f518978ab
golang.org/x/text v0.0.0-20170915090833-1cbadb444a80
)

作者使用的版本字符串如 v0.0.0-20170922011244-0744d001aa84,由 semver 指示 v0.0.0、时间戳和类似 git 提交 ID 的内容组成。

我如何找出这些版本字符串?我猜那些 golang.org/x 包在某个时候会根据语义版本控制进行版本控制,但要真正尝试 go mod,我需要弄清楚那些 现在

最佳答案

更新

这个命令是将 replace 命令添加到 go.mod 而不是使用我最初发布的 git 手动执行的更好的解决方案:

go mod edit -replace github.com/docker/docker=github.com/docker/engine@ea84732a7725

产生类似的结果,但不是使用伪版本,而是找到标记的引擎版本。

replace github.com/docker/docker => github.com/docker/engine v17.12.0-ce-rc1.0.20191113042239-ea84732a7725+incompatible

或者,包括一个标记的 docker 版本。

go mod edit -replace github.com/docker/docker@v1.13.1=github.com/docker/engine@ea84732a7725

对于

replace github.com/docker/docker v1.13.1 => github.com/docker/engine v17.12.0-ce-rc1.0.20191113042239-ea84732a7725+incompatible

感谢@Shivam010 on Medium


原始的、已弃用的答案

这是我的做法。

check out 所需分支/标签上的存储库。例如

git clone -b v19.03.5 git@github.com:docker/engine.git

然后

cd engine
TZ=UTC git --no-pager show \
--quiet \
--abbrev=12 \
--date='format-local:%Y%m%d%H%M%S' \
--format="%cd-%h"

我明白了

20191113042239-ea84732a7725

go.mod 中用作

replace github.com/docker/docker v1.13.1 => github.com/docker/engine v0.0.0-20191113042239-ea84732a7725

关于Go Modules : finding out right pseudo-version (vX. Y.Z-<timestamp>-<commit>) 所需包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52242077/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com