go mod replace 记录

79 阅读1分钟

问题背景:最近在搞 libovsdb 的一个 lock 定位,所以想替换为自己的仓库,遇到一点小问题,记录一下:

1. 一开始的环境

image.png

github.com/ovn-org/libovsdb => github.com/kubeovn/libovsdb v0.0.0-20241120032411-25ef1bbc83a5

2. replace 为 github.com/kubeovn/libovsdb main

image.png

image.png

结果正常

3. replace 为 github.com/kubeovn/libovsdb main

image.png

遇到报错:

image.png

解决:

参考: stackoverflow.com/questions/5…

直接建一个开发分支,然后 go get -u


go get github.com/someone/some_module@af044c0995fe


比如:

image.png

image.png

image.png

细节


root@debian:~/f/kube-ovn  debug-rpc-cli-lock ✔                                                                                                                                                                                                            2m
▶ grep libovsdb -r go.mod
go.mod:	github.com/ovn-org/libovsdb v0.7.0
go.mod:	github.com/kubeovn/libovsdb v0.0.0-20250515031615-be33f5b91cb0 // indirect # go get -u https://github.com/kubeovn/libovsdb@be33f5b91cb0c7a66e6ac9383f3274fe75377851 的结果
go.mod:	github.com/ovn-org/libovsdb => github.com/kubeovn/libovsdb v0.0.0-20241120032411-25ef1bbc83a5 # 还是要用 go mod edit -replace 调整为 v0.0.0-20250515031615-be33f5b91cb0



go mod edit -replace github.com/ovn-org/libovsdb=github.com/kubeovn/libovsdb@v0.0.0-20250515031615-be33f5b91cb0

小结:go get -u 升级版本,然后用 go mod edit -replace 也替换掉版本,缺一不可



# 

go get -u github.com/kubeovn/libovsdb@be33f5b91cb0c7a66e6ac9383f3274fe75377851

# 之后,根据 go mod 中的 的版本好,包含v0.0.0-20250515031615前缀,12位 commit前缀,执行下属 replace

go mod edit -replace github.com/ovn-org/libovsdb=github.com/kubeovn/libovsdb@v0.0.0-20250515031615-be33f5b91cb0

image.png

image.png