如何解决三个etcd-go软件包有什么区别?
有三种不同的etcd-go软件包,它们是:
根据提交here,所有
官方代码已将软件包从go.etcd.io/etcd
更改为go.etcd.io/etcd/v3
并显示以下消息:
此更改使etcd软件包与现有Go兼容 用于模块版本控制的生态系统。
但是我无法通过go.etcd.io/etcd/v3
命令获得go get
软件包。
那么这三个etcd-go软件包之间有什么区别?以及如何正确使用它们。
谢谢。
解决方法
问题2中的文档指向此链接
该软件包具有以下版本并提交哈希值
v0.5.0(ae9734e)
问题3中的文档指向此链接
该软件包具有以下版本并提交哈希值
v3.3.0(c20cc05)
etcd在最新版本中将进行重大更改,因此将模块路径更改为与旧路径不同。这是Golang官方博客中推荐的约定。
阅读此博客。 https://blog.golang.org/v2-go-modules 即使它们都指向同一个仓库,您也必须像下面一样以不同的方式导入这些版本。您可以从存储库根目录中的go.mod文件中找到正确的模块路径。
导入“ go.etcd.io/etcd/clientv3”
,导入“ go.etcd.io/etcd/v3/clientv3”
客户端v3.4
中存在一个已知问题,其中go get
失败。看到此问题:https://github.com/etcd-io/etcd/issues/11154
尽管由于v3.5
已(已)修复了问题,但该版本尚未发布(撰写本文时)。
有一些解决方法可以解决上述问题。对我们有用的一个方法是规避etcd
的错误实现的go模块,并将版本直接固定在我们的go.mod文件中的提交中:
require go.etcd.io/etcd v0.0.0-20200520232829-54ba9589114f
然后使用以下命令导入clientv3
:
import "go.etcd.io/etcd/clientv3"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。