简介、问题描述
在按照readthedocs教程进行超级账本框架 fabric区块链的学习过程中,到通道创建这一步一直失败,即无法成功运行:
./network.sh up createChannel
出现的错误提示:
直接去搜索这个segmentation fault无任何有效解决方案。以下是我的整个排查过程,仅供大家参考。
我的系统环境是win11、wsl2、docker desktop,在wsl2中安装的ubuntu18.04。
排查过程
以下是我的排查尝试过程记录,网友可直接跳到总结页进行所有步骤的自检。
尝试1、更换peer等二进制到新版
出现过敲osnadmin也会提示segmentation fault的问题,于是打算直接换掉二进制看看,切到2.2.6和旧版都不行。
附:仓库地址
fabric-samples 示例仓库 https://github.com/hyperledger/fabric-samples
fabric 主仓库 https://github.com/hyperledger/fabric
github 加速 https://github.91chi.fun/
直接去fabric仓库地址release页面下载linux安装包,解压到samples仓库下。
cd fabric-samples
tar -zxvf /root/hyperledger-fabric-2.4.2.tar.gz
问题依旧。
尝试2、删除所有镜像,重新下载镜像
我在能运行成功的同事那里拷了一份docker镜像了,但那个版本更旧,怀疑应该不是docker镜像版本问题。但还是尝试一下。
直接去fabric仓库下的install-fabric.sh查看源码。可以复制内容下来,vi一个脚本再运行:
./install-fabric.sh docker
运行过程:
最终下载了最新版镜像:
但问题依旧。
尝试3、检查gopath并重新clone一份
最终只能怀疑是不是仓库下载不全,重新clone。
经检查go env正常、GOPATH变量也有设置
在重新创建路径给新文件夹起名时,突然就想到了go仓库的起名规范,即要github.com/xxx.com/xxxproject/这样子去组织一个工程,于是我创建了如下文件夹
/opt/gopath/src/github.com/hyperledger/ ,就是这个文件夹下的fabric-samples仓库,在/test-network中才正常创建通道!!以下是解决步骤
cd 到你的GOPATH具体路径,比如/opt/gopath/
mkdir -p src/github.com/hyperledger
cd src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric-samples.git
##网络不行的话使用下面这个加速git
git clone https://github.91chi.fun/https://github.com/hyperledger/fabric-samples.git
进行docker镜像清理:
docker stop `docker ps -a -q`
docker rm $(docker images -aq)
我是直接在docker desktop删除所有镜像,然后进行最新版docker镜像的拉取。
到这一步,去test-network下,执行./test-network.sh up createChannel -c newchannel666
才发现终于可以成功创建自定义通道了!
总结、排查步骤
请网友按照以下步骤检查自己的环境,成功了记得回来点赞三连哦!
1.是否设置环境变量GOPATH,例如/opt/gopath
2.你的samples仓库要clone在$GOPATH/src/github.com/hyperledger/fabric-samples/,并且是main分支
3.你的二进制是最新版,并解压到fabric-samples/,同时将该bin路径配置PATH环境变量,例如export PATH=$PATH:/opt/gopath/src/github.com/hyperledger/fabric-samples/bin
4.你的docker镜像是最新版(例如 fabric 2.4、ca-1.5),若不是手动删除所有镜像并执行docker最新版的下载,使用BootStrap.sh -sb或者install-fabric.sh docker可以只进行docker镜像的安装。
5.检查docker、docker-compose、go的版本为新版。