问题背景:最近在搞 libovsdb 的一个 lock 定位,所以想替换为自己的仓库,遇到一点小问题,记录一下:
1. 一开始的环境
github.com/ovn-org/libovsdb => github.com/kubeovn/libovsdb v0.0.0-20241120032411-25ef1bbc83a5
2. replace 为 github.com/kubeovn/libovsdb main
结果正常
3. replace 为 github.com/kubeovn/libovsdb main
遇到报错:
解决:
参考: stackoverflow.com/questions/5…
直接建一个开发分支,然后 go get -u
go get github.com/someone/some_module@af044c0995fe
比如:
细节
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