1、下载fabric国密版本源码
源码地址:https://github.com/dddengyunjie/fabric
(源码是一位大神的,博客地址https://blog.csdn.net/dyj5841619/article/details/90670703,有详细修改国密过程,可以跟着流程自行尝试修改源码)
该版本为:fabric v1.4.1
在Linux上创建目录:mkdir -p /opt/gopath/src/github.com/hyperledger/
将fabric源码上传、解压到hyperledger目录下。
2、编译源码
cd fabric 进入项目根目录。
make release开始编译源码,在编译的时候会出现异常,基本的都是缺少依赖库,因为golang.org下的库需要翻墙才能下载,所以这里需要手动下载依赖库。
异常示例:
package golang.org/x/crypto: 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)
对于golang.org/x/下的库,在GitHub都有源存在,我们需要进行收到下载。
下载步骤:
mkdir -p $GOPATH/src/golang.org/x (关键,必须在目录上对应)
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/crypto.git 下载需要的库
git clone https://github.com/golang/sys.git(根据需要对应*.git,即可进行下载)
注意:这里最好把下载的库,复制到fabric/vendor/golang.org/x/目录下,因为发现在生产镜像时,不会去GOPATH下边去找依赖。
再次进行编译即可make release
当编译通过后会在release/linux-amd64/bin/ 目录下生产所需工具。
3、生成镜像
mkdir -p $GOPATH/src/github.com/maxbrunsfeld
$ cd $GOPATH/src/github.com/maxbrunsfeld
$ git clone https://github.com/maxbrunsfeld/counterfeiter.git
$ go install ./counterfeiter
$ apt install -y bzip2
出现异常:
cp: cannot stat 'build/docker/gotools/bin/protoc-gen-go': No such file or directory(找不到protoc-gen-go文件)
解决:将$GOPATH/bin下面protoc-gen-go的复制过去
在fabric根目录下执行命令make docker 即可,如果出现异常,基本上都是缺少依赖库,请根据步骤2进行。过程中会出现一些红色日志,只要不退出生产镜像过程,都没事。
生产的镜像如图所示:docker images
4、运行实例
该fabric版本是1.4.1,在example目录下没有e2e_cli文件夹,这里需要手动上传,将fabric1.2.0版本中的e2e_cli文件夹上传,进行相应修改。
cd e2e_cli 进入e2e_cli目录,执行./network_setup.sh up。
出现END-E2E字样表示运行成功。