Hyperledger Go SDK v1.0.0-alpha3与Fabric v1.1.0不兼容致dep ensure报错如何解决?
解决Hyperledger Fabric v1.1.0与milagro-crypto/amcl依赖冲突问题
我之前维护基于Fabric v1.1.0和fabric-sdk-go v1.0.0-alpha3的项目时,也碰到过完全一样的问题。这个错误的核心原因是:Fabric v1.1.0依赖的是milagro-crypto/amcl的旧版本,但dep ensure默认会拉取master分支,而该分支后来重构了目录结构,原来的version3/go/amcl等子包已经被移除了。
下面是具体的解决步骤:
修改Gopkg.toml添加版本约束
打开项目根目录下的Gopkg.toml文件,添加以下约束条目,指定Fabric v1.1.0兼容的amcl版本:[[constraint]] name = "github.com/milagro-crypto/amcl" revision = "7a6a39e661bf"这个commit是Fabric v1.1.0官方依赖的amcl版本,能确保子包路径完全匹配。
清理旧依赖缓存(可选但推荐)
删除项目根目录下的Gopkg.lock文件和vendor文件夹,避免旧的依赖缓存干扰新的依赖解析:rm Gopkg.lock rm -rf vendor重新执行依赖安装
运行dep ensure命令重新拉取并安装符合约束的依赖:dep ensure -v加上
-v参数可以看到详细的依赖解析过程,方便排查后续可能出现的问题。
如果执行完这些步骤还是有问题,可以检查你的Gopkg.toml里是否有其他和amcl相关的约束,确保没有冲突的版本要求。
内容的提问来源于stack exchange,提问作者angelokh
相关产品推荐
相关产品推荐

