fabric部署,运行e2e_cli出现的问题:
最常见的就是ERRO 001 cannot run peer because error when setting up MSP from directory /opt/gopath/src/......。出现这个问题主要是由于镜像没下全以及缺少ltdl.h文件的原因,当然还要确定你的fabric版本与你下的镜像版本一致,我使用的是v1.0.0。
解决方式如下:
1.确定fabric版本与你下的镜像版本一致(推荐使用v1.0.0):
在fabric目录下输入git checkout v1.0.0
版本一致的话就会输出:
不正确的话则在fabric目录下输入git clone https://gerrit.hyperledger.org/r/fabric -b v1.0.0
确保你下的版本是v1.0.0。
2.下全镜像且与fabric版本一致:
fabric运行所需要的镜像一共是12种,如下图所示:
可以通过输入docker images查看你已下载的镜像。
如果发现有少的镜像则用下述语句下载,每条语句对应下载每一个镜像,请根据所缺失的镜像选择语句并执行:
docker pull hyperledger/fabric-tools:x86_64-1.0.0
docker pull hyperledger/fabric-couchdb:x86_64-1.0.0
docker pull hyperledger/fabric-kafka:x86_64-1.0.0
docker pull hyperledger/fabric-orderer:x86_64-1.0.0
docker pull hyperledger/fabric-peer:x86_64-1.0.0
docker pull hyperledger/fabric-ca:x86_64-1.0.0
docker pull hyperledger/fabric-ccenv:x86_64-1.0.0
docker pull hyperledger/fabric-baseimage:x86_64-0.4.7
docker pull hyperledger/fabric-baseos:x86_64-0.4.7
docker pull hyperledger/fabric-zookeeper:x86_64-1.0.0
docker pull hyperledger/fabric-javaenv:x86_64-1.0.0
docker pull hyperledger/fabric-membersrvc:latest
请注意每个镜像的版本号!大多数往往缺少baseimage,baseos,membersrvc这三种。
3.erro 001的错误往往是由无法正确生成公私钥和证书的原因,测试如下:
在fabric目录下输入make cryptogen
可能会出现两种错误:
错误1:
解决方法是:在.../fabric/vendor/github.com/miekg/pkcs11下有个pkcs11.go文件 里面有两条注释包
含-I/usr/local/share/libtool,直接把这两条注释删掉就ok。
错误2:
原因是缺少ltdl.h文件。
解决方法:下载libltdl-dev
ubuntu用户输入apt-get install libtool libltdl-dev
mac用户输入brew install libtool
4.还有可能出现的一个错误是:message:network e2ecli_default not found
解决方法:.../e2e-cli/base中打开peer-base.yaml 把e2ecli_default改成e2e_cli_default。
我所遇到的mac和ubuntu上出现的ERRO 001 问题就是这样子解决的~
另外有时go version时说没有安装go,每次都需要运行上面到命令才有版本信息。这时可以直接gedit .bashrc
把命令source /etc/profile加入进去行了。