该小结会介绍
PATH
路径选择一个存放代码的目录。我将代码放在了$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
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
如果SAMPLES
为true
则下载fabric-samples
代码。
if [ "$SAMPLES" == "true" ]; then
echo
echo "Installing hyperledger/fabric-samples repo"
echo
samplesInstall
fi
如果BINARIES
为true
则下载二进制
文件
if [ "$BINARIES" == "true" ]; then
echo
echo "Installing Hyperledger Fabric binaries"
echo
binariesInstall
fi
如果DOCKER
为true
,则下载Docker
相关镜像
if [ "$DOCKER" == "true" ]; then
echo
echo "Installing Hyperledger Fabric docker images"
echo
dockerInstall
fi
打印帮助信息:
printHelp() {
echo "Usage: bootstrap.sh [] [] [][-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
作者:沙漠中的猴
链接:https://www.jianshu.com/p/87a7e273b2fd
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。