美文网首页
Hyperledger Fabric 1.2系列:2.下载二进制

Hyperledger Fabric 1.2系列:2.下载二进制

作者: 沙漠中的猴 | 来源:发表于2018-08-02 11:12 被阅读0次

    简介

    该小结会介绍

    • 官方脚本
    • 下载fabric-samples代码
    • 下载二进制文件
    • 下载Docker镜像
    • 将二进制文件添加进PATH路径

    下载fabric-samples代码

    选择一个存放代码的目录。我将代码放在了$GOPATH/src目录下。

    cd $GOPATH/src
    

    官方提供了一个脚本,可以直接下载fabric-samples代码、docker镜像以及二进制文件。稍后我们讲解一下这个文件里面都做了些什么操作。

    curl -sSL http://bit.ly/2ysbOFE | bash -s 1.2.0
    

    如果你想下载Fabric,Fabric-CA和第三方镜像,你可以指定其版本

    curl -sSL http://bit.ly/2ysbOFE | bash -s <fabric> <fabric-ca> <thirdparty>
    curl -sSL http://bit.ly/2ysbOFE | bash -s 1.2.0 1.2.0 0.4.10
    

    这种方式可能解析不了。所以请尝试下面的这个命令。

    curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh | bash -s  1.2.0 1.2.0 0.4.10
    

    这里有个小技巧,命令行可能解析不了http://bit.ly/2ysbOFE这个链接。你可以把这个链接粘贴到浏览器里面,然后再将解析之后的链接,复制回来。

    之后,你就会看到你当前处于fabric-samples文件夹内。
    输入docker images之后,会看到多个docker 镜像。
    fabric-samples目录的/bin文件夹下,会看到多个二进制文件。

    解析官方脚本。

    官方的这个脚本可以在github上面查看的到。
    https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh

    github上的内容,不太方便查看,我把这个文件复制出来了。你可以打开另一个窗口来查看完整的脚本内容: 脚本链接

    解析脚本的执行流程

    默认设置的代码版本为1.2.0,CA版本为1.2.0 ,第三方镜像版本为0.4.10

    # if version not passed in, default to latest released version
    export VERSION=1.2.0
    # if ca version not passed in, default to latest released version
    export CA_VERSION=$VERSION
    # current version of thirdparty images (couchdb, kafka and zookeeper) released
    export THIRDPARTY_IMAGE_VERSION=0.4.10
    

    如果你在执行脚本的时候,输入了三个参数,会分别对代码版本、CA版本、第三方镜像版本赋值。

    if [ ! -z $1 ]; then
      VERSION=$1;shift            
      if [ ! -z $1 ]; then
        CA_VERSION=$1;shift
        if [ ! -z $1 ]; then
          THIRDPARTY_IMAGE_VERSION=$1;shift
        fi
      fi
    fi
    
    

    如果你输入的版本号码是1.0.x或者1.1.x则会进入第一个if分支,赋值对应的二进制压缩包名称。
    否则进入else分支,赋值1.2.0版本的二进制压缩包名称。

    # prior to 1.2.0 architecture was determined by uname -m
    if [[ $VERSION =~ ^1\.[0-1]\.* ]]; then
      export FABRIC_TAG=${MARCH}-${VERSION}
      export CA_TAG=${MARCH}-${CA_VERSION}
      export THIRDPARTY_TAG=${MARCH}-${THIRDPARTY_IMAGE_VERSION}
    else
      # starting with 1.2.0, multi-arch images will be default
      : ${CA_TAG:="$CA_VERSION"}
      : ${FABRIC_TAG:="$VERSION"}
      : ${THIRDPARTY_TAG:="$THIRDPARTY_IMAGE_VERSION"}
    fi
    
    BINARY_FILE=hyperledger-fabric-${ARCH}-${VERSION}.tar.gz
    CA_BINARY_FILE=hyperledger-fabric-ca-${ARCH}-${CA_VERSION}.tar.gz
    

    解析命令行参数:

    # then parse opts
    while getopts "h?dsb" opt; do
      case "$opt" in
        h|\?)
          printHelp
          exit 0
        ;;
        d)  DOCKER=false
        ;;
        s)  SAMPLES=false
        ;;
        b)  BINARIES=false
        ;;
      esac
    done
    

    如果SAMPLEStrue则下载fabric-samples代码。

    if [ "$SAMPLES" == "true" ]; then
      echo
      echo "Installing hyperledger/fabric-samples repo"
      echo
      samplesInstall
    fi
    

    如果BINARIEStrue则下载二进制文件

    if [ "$BINARIES" == "true" ]; then
      echo
      echo "Installing Hyperledger Fabric binaries"
      echo
      binariesInstall
    fi
    

    如果DOCKERtrue,则下载Docker相关镜像

    if [ "$DOCKER" == "true" ]; then
      echo
      echo "Installing Hyperledger Fabric docker images"
      echo
      dockerInstall
    fi
    

    解析脚本的函数内容

    打印帮助信息:

    printHelp() {
      echo "Usage: bootstrap.sh [<version>] [<ca_version>] [<thirdparty_version>][-d -s -b]"
      echo
      echo "-d - bypass docker image download"
      echo "-s - bypass fabric-samples repo clone"
      echo "-b - bypass download of platform-specific binaries"
      echo
      echo "e.g. bootstrap.sh 1.2.0 -s"
      echo "would download docker images and binaries for version 1.2.0"
    }
    

    遍历下载docker镜像:

    dockerFabricPull() {
      local FABRIC_TAG=$1
      for IMAGES in peer orderer ccenv tools; do
          echo "==> FABRIC IMAGE: $IMAGES"
          echo
          docker pull hyperledger/fabric-$IMAGES:$FABRIC_TAG
          docker tag hyperledger/fabric-$IMAGES:$FABRIC_TAG hyperledger/fabric-$IMAGES
      done
    }
    

    遍历下载第三方镜像:

    dockerThirdPartyImagesPull() {
      local THIRDPARTY_TAG=$1
      for IMAGES in couchdb kafka zookeeper; do
          echo "==> THIRDPARTY DOCKER IMAGE: $IMAGES"
          echo
          docker pull hyperledger/fabric-$IMAGES:$THIRDPARTY_TAG
          docker tag hyperledger/fabric-$IMAGES:$THIRDPARTY_TAG hyperledger/fabric-$IMAGES
      done
    }
    

    下载CA镜像:

    dockerCaPull() {
          local CA_TAG=$1
          echo "==> FABRIC CA IMAGE"
          echo
          docker pull hyperledger/fabric-ca:$CA_TAG
          docker tag hyperledger/fabric-ca:$CA_TAG hyperledger/fabric-ca
    }
    

    如果first-network目录存在,则将代码切换到VERSION版本。(说明fabric-samples代码已经下载,并且当前处于fabric-samples文件夹内)。
    如果fabric-samples目录存在,则进入fabric-samples目录内,切换到VERSION版本。
    否则,下载fabric-samples代码,切换到VERSION版本。

    
    samplesInstall() {
      # clone (if needed) hyperledger/fabric-samples and checkout corresponding
      # version to the binaries and docker images to be downloaded
      if [ -d first-network ]; then
        # if we are in the fabric-samples repo, checkout corresponding version
        echo "===> Checking out v${VERSION} branch of hyperledger/fabric-samples"
        git checkout v${VERSION}
      elif [ -d fabric-samples ]; then
        # if fabric-samples repo already cloned and in current directory,
        # cd fabric-samples and checkout corresponding version
        echo "===> Checking out v${VERSION} branch of hyperledger/fabric-samples"
        cd fabric-samples && git checkout v${VERSION}
      else
        echo "===> Cloning hyperledger/fabric-samples repo and checkout v${VERSION}"
        git clone -b master https://github.com/hyperledger/fabric-samples.git && cd fabric-samples && git checkout v${VERSION}
      fi
    }
    

    将二进制文件添加进PATH路径

    进入fabric-samples/bin文件夹内,输入pwd命令,来获取当前的路径

    root@JDu4e00u53f7:~# cd $GOPATH/src/fabric-samples/bin/
    root@JDu4e00u53f7:~/gowork/src/fabric-samples/bin# pwd
    /root/gowork/src/fabric-samples/bin
    

    复制上面的路径。打开~/.bashrc文件。将上面的路径添加到PATH路径下。

    vim ~/.bashrc 
    

    举例:我将下面的内容添加进了我的~/.bashrc文件的最下面。请根据自己的实际路径来配置该变量。

    # set fabric-samples bin
    export PATH=$GOPATH/src/fabric-samples/bin:$PATH    
    

    之后,保存并退出。执行source ~/.bashrc命令

    检查二进制文件是否生效

    在任意目录下输入: cryptogen version

    root@JDu4e00u53f7:~/gowork/src# cryptogen version
    cryptogen:
     Version: 1.2.0
     Commit SHA: cae2ad4
     Go version: go1.10
     OS/Arch: linux/amd64
    

    总结

    如果你发现每次重新登录的时候,都需要执行source ~/.bashrc命令生效二进制文件。你可以参考如下链接来解决该问题:https://www.jianshu.com/p/c4946024b946

    目录

    Hyperledger Fabric 1.2系列:1. 环境准备

    Hyperledger Fabric 1.2系列:2.下载二进制文件、Docker 镜像及解析官方提供的下载脚本

    相关文章

      网友评论

          本文标题:Hyperledger Fabric 1.2系列:2.下载二进制

          本文链接:https://www.haomeiwen.com/subject/gjghvftx.html