简介、问题描述

在按照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的版本为新版。