Hyperledger Fabric报错集锦
在 fabric 的使用过程中总是遇到各种各样的坑, 有很多网上都搜不到, 我依稀记得当初第一次使用 1.2.0 在 Mac 上的时候, 遇到的莫名其妙的 msp NOT FOUND 问题, 国内根本搜不到, 看了很多外文的帖子也是无果, 在此希望记录下来自己的踩坑历程, 这个帖子我会慢慢更新, 希望遇到类似的问题的小伙伴能够有所参考, 并且可以相互交流踩坑得到的经验.
文章目录
- Hyperledger Fabric报错集锦
- (一)安装配置过程中
- 1. go get 无法下载
- 2. 不识别-C | make: Error 1 | make: Error 2
- 3. Docker
- 3.1 Docker 版本不存在
- 3.2 binary 下载和 docker 镜像拉取 会中途断掉
- 3.3 Docker 镜像缺失与images 版本匹配问题
- 4 git clone下载与 docker pull 加速
- 4.1 git 加速
- 4.2 docker 加速
(一)安装配置过程中
1. go get 无法下载
当我在
1 2 3 4 5 6 | Error: failed to normalize chaincode path: 'go list' failed with: go: github.com/hyperledger/[email protected] requires github.com/go-openapi/[email protected] requires golang.org/x/[email protected]: unrecognized import path "golang.org/x/crypto" (https fetch: Get https://golang.org/x/crypto?go-get=1: dial tcp 216.239.37.1:443: i/o timeout): exit status 1 !!!!!!!!!!!!!!! Chaincode packaging on peer0.org1 has failed !!!!!!!!!!!!!!!! ERROR !!! Deploying chaincode failed |
报错原因: 安装githun 上go的依赖包的时候,长时间无响应.
解决办法: 使用七牛云 go module 镜像
1 2 | go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct |
2. 不识别-C | make: Error 1 | make: Error 2

报错原因: git版本和 make 编译过程是按照 Ubuntu 的,并不是 centOS
解决办法: 直接避开编译过程, 使用 scrips 中的脚本
1 2 | cd fabric/scripts ./bootstrap.sh |
3. Docker
3.1 Docker 版本不存在
1 2 3 4 5 6 7 8 9 | LOCAL_VERSION=2.0.0 DOCKER_IMAGE_VERSION= =================== WARNING =================== Local fabric binaries and docker images are out of sync. This may cause problems. =============================================== /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.24.3) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning) ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running? |
原因: Docker 没有启动
解决:
3.2 binary 下载和 docker 镜像拉取 会中途断掉
在
1 | ./bootstrap.sh |
时候, 老是下载不完, 基本速度保持在 300B/s, 一下就是一整天, 然后还老是出错, WDNMD, 如果直接忽视这个问题就会导致之后出现 Docker images与本地文件版本不一致的问题 :
1 2 | LOCAL_VERSION=2.0.0 DOCKER_IMAGE_VERSION=1.4.4 |
因为这句脚本每次执行的时候就算报错都要很久, 在好几天都没办法搞定的情况下, 我最后直接修改了 bootstrap.sh 脚本, 在download()函数里面有一句万恶之源
最后在这里附上我修改过的 download 函数,并且之后会提供binary 文件的下载和修改过的shell脚本下载.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | download() { local BINARY_FILE=$1 local URL=$2 echo "===> Downloading: " "${URL}" # #万恶之源来了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #下面这句话的意思是下载 tar.gz ,如果下载不成功的话(说明本地已有tar.gz文件) 就赋值 rc=tar.gz名 ,然后解压 # #wget "${URL}" || rc=$? #我把这句话注释掉,因为网速太慢,几乎一定会下载失败,所以你需要预先下载 # hyperledger-fabric-ca-linux-amd64-1.4.4.tar.gz # 和 # hyperledger-fabric-linux-amd64-2.0.0.tar.gz # tar xvzf "${BINARY_FILE}" || rc=$? #下面这句话我觉得 TM 傻逼 , 删掉原始包导致每次都要重新下载, 下载一下就是一天,WDNMD, 所以完全可以删掉 #rm "${BINARY_FILE}" # -n 用来判断 变量 是否为空 if [ -n "$rc" ]; then echo "==> There was an error downloading the binary file." return 22 else echo "==> Done." fi } |
3.3 Docker 镜像缺失与images 版本匹配问题
image在很多情况下都会缺失, 或者 版本号对不上, 这应该是个老问题了, 之前 1.2.0 的东西也是莫名其妙报错,很多都是 docker 的镜像文件不对.
以下附录为标准的 fabric2.0.0 依赖的 images:
1 2 3 4 5 6 7 8 9 10 11 | docker pull hyperledger/fabric-ca:1.4.4 docker pull hyperledger/fabric-tools:2.0.0 docker pull hyperledger/fabric-peer:2.0.0 docker pull hyperledger/fabric-orderer:2.0.0 docker pull hyperledger/fabric-ccenv:2.0.0 docker pull hyperledger/fabric-baseos:2.0.0 docker pull hyperledger/fabric-javaenv:2.0.0 docker pull hyperledger/fabric-nodeenv:2.0.0 docker pull hyperledger/fabric-zookeeper:0.4.18 docker pull hyperledger/fabric-kafka:0.4.18 docker pull hyperledger/fabric-couchdb:0.4.18 |
这里的具体版本可以通过
1 2 3 4 5 6 7 8 | # if version not passed in, default to latest released version VERSION=2.0.0 # if ca version not passed in, default to latest released version CA_VERSION=1.4.4 # current version of thirdparty images (couchdb, kafka and zookeeper) released THIRDPARTY_IMAGE_VERSION=0.4.18 ARCH=$(echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')") MARCH=$(uname -m) |
可以看到这里指明了 docker-tools , peer, orderer 等的版本为
4 git clone下载与 docker pull 加速
4.1 git 加速
这个推荐使用码云, 选择从 GitHub/GitLab 导入:

然后填写需要 git 的地址:(比如我的就是 fabric.git) , 获取码云的国内链接, 然后使用国内链接代替原来的 github 地址 git 就会很快.

4.2 docker 加速
点开阿里云容器镜像服务, 下拉找到镜像加速


查看自己的加速链接,并且执行如下代码修改
1 2 3 4 5 6 7 8 | sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["你自己的加速地址"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker |
之后再去下载 docker 就会快很多.