写这篇的时候是2019年7月中旬,原因是几周前准备研究一下Hyperledger Caliper怎么用,然后用来测试一下Hyperledger Fabric - 1.4.1区块链网络的性能。
按照Caliper官方文档的操作步骤,首先遇到了编译问题,然后又遇到了CLI安装不成功的问题,折腾了1-2周,连官方样例都没跑起来。这1-2周一直在github社区上跟踪这些问题,也与contributors邮件交流过很多次,在国外的contributor们都说无法复现问题,但是很多像我这样的刚接触caliper的用户都遇到了同样的问题。
经主要contributor的确认,7月份最新的版本的Caliper必须要用CLI来跑脚本,CLI是最近新提交的功能。也就是说,CLI装不成功,你就用不了Caliper了。(此处心里飘过一些不能播的OS)
由于比较着急使用,加上这段时间对Caliper有了一定的了解,看了一些log和代码,决定试着回退一下CLI提交前的版本,用比较新的旧版本看看能不能跑起来样例。花了2天时间,还真跑成功了。决定在这里记录一下过程,也分享出来,给后面想用caliper的小伙伴填填坑。
OS - Ubuntu 18.04.2 LTS Bionic in VMware® Workstation 12 Pro - 12.5.7 build-5813279
npm version - 6.4.1.
Node version - 8.16.0.
node-gyp version - 4.0.0
Docker version - 18.09.5, build e8ff056
docker-compose version - 1.24.0, build 0aa5906
官网文档地址:
https://hyperledger.github.io/caliper/docs/1_Getting_Started.html)
我的操作指令如下(Ubuntu 18.04)
$ sudo apt-get install make g++
$ apt-get update
$ sudo apt install curl
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt install nodejs
$ npm install -g node-gyp
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository “deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable”
$ sudo apt-get update
$ sudo apt-get install docker-ce
$ docker -v
$ sudo systemctl enable docker
$ sudo systemctl start docker
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
$ sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose- ( u n a m e − s ) − (uname -s)- (uname−s)−(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
$ git clone https://github.com/hyperledger/caliper
$ cd caliper
$ git reset --hard 93ef639c11d67c41df77551f20ca8cb2f1a758cf
$ cp package.json package_backup.json
$ npm install
$ npm run repoclean
$ npm run bootstrap --force
$ npm install [email protected] [email protected]
$ npm install nconf-yaml
$ npm install winston-daily-rotate-file
$ npm install node-zookeeper-client
$ npm install compare-versions
$ npm install table
$ npm install mustache
$ npm install fabric-protos
$ sudo npm install -g node-gyp node-pre-gyp
$ npm rebuild
$ cd caliper/packages/caliper-application/scripts
$ node run-benchmark.js -c …/benchmark/simple/config.yaml -n …/network/fabric-v1.4.1/2org1peergoleveldb/fabric-ccp-go.yaml
1 你可能会在编译caliper代码的时候,运行到npm run bootstrap卡住,这也是社区很多人遇到的问题,也耗费了我很长时间。有的人用npm run bootstrap --force可以成功,我的经验是如果加了–force也卡了很久,ctrl-c中断操作,删掉当前目录下的package-lock.json,将之前备份的package_backup.json覆盖package.json,然后重新运行npm run bootstrap --force就能成功。这个问题在github的issue列表里,有很多讨论,链接如下供参考。
https://github.com/hyperledger/caliper/issues/478
https://github.com/hyperledger/caliper/issues/445
2 关于CLI安装不成功的问题在github社区里我提交了一个issue,有一些讨论,有可能后续新的版本这个问题会被fix,可以持续关注。地址如下:
https://github.com/hyperledger/caliper/issues/496
3 阅读本文可能需要你已经对hyperledger caliper和hyperledger fabric有一些了解,包括操作方面,完全没有概念的可能需要自己补一些东西。由于自己水平有限,目前只能写成这样了,望海涵。
有任何问题欢迎随时交流指正~