Hyperledger Fabric(v1.1.0)编译时遇到的问题
Hyperledger Fabric(v1.1.0)编译时遇到的问题
0. 编译过程的坑
编译时,按照如下顺序编译
- make release,编译源码生成二进制文件
- make docker,生成一系列的docker镜像
第一步没什么问题,第二部时会遇到一些问题,比如:
go get不能获取golang.org包的问题- docker中ubuntu官方镜像源不能访问或者太慢问题
1. go get不能获取golang.org包
在编译过程中,生成docker镜像时需要go相关的工具,github上的可以正常,但是golang.org的包由于墙的原因不能获取。尝试过设置全局代理、设置git代理,不过试了半天都没成功。
我的解决方法是:
- 首先在github上获取包的源码
- 然后只编译gotools,
make gotools - 将生成的可执行文件复制到
fabric/build/docker/gotools/bin目录下
在fabric/gotools/Makefile文件中,可以看到编译时需要的golang依赖包。
go.fqp.govendor := github.com/kardianos/govendor
go.fqp.golint := golang.org/x/lint/golint
go.fqp.goimports := golang.org/x/tools/cmd/goimports
go.fqp.ginkgo := github.com/onsi/ginkgo/ginkgo
go.fqp.gocov := github.com/axw/gocov/...
go.fqp.misspell := github.com/client9/misspell/cmd/misspell
go.fqp.gocov-xml:= github.com/AlekSi/gocov-xml
go.fqp.manifest-tool := github.com/estesp/manifest-tool
1.1 github上获取包的源码
在目录fabric/build/gopath/src下分别建立两个目录github.com和golang.org。
进入golang.org目录获取包源码
mkdir x && cd x
git clone https://github.com/golang/tools.git
git clone https://github.com/golang/lint.git
进入github.com目录获取包源码
git clone https://github.com/kardianos/govendor.git
git clone https://github.com/onsi/ginkgo.git
git clone https://github.com/axw/gocov.git
git clone https://github.com/client9/misspell.git
git clone https://github.com/AlekSi/gocov-xml.git
git clone https://github.com/estesp/manifest-tool.git
1.2 编译gotools并复制可执行文件
make gotools编译go的工具。然后将将生成的可执行文件复制到fabric/build/docker/gotools/bin目录下。
2. docker官方镜像源修改
解决完上一个问题后,会卡在生成testenv的docker地方,原因是原有docker中的ubuntu镜像源是Ubuntu官方的,速度很慢或者根本不能访问,直接替换为阿里云的镜像源就好了。
首先定位生成docker的目录位置,是在fabric/build/testenv/目录下。该目录下的Dockerfile文件描述了该docker要做的东西。我们需要在这个文件中修改镜像源。
在文件中加入这三行:
# add by gexin, change the sources.list
COPY payload/sources.list /etc/apt/
RUN sudo apt-get update
修改后的文件内容如下:
# Copyright Greg Haskins All Rights Reserved
#
# SPDX-License-Identifier: Apache-2.0
#
FROM hyperledger/fabric-buildenv:x86_64-1.1.1-snapshot-feed00ad6
# fabric configuration locations
ENV FABRIC_CFG_PATH /etc/hyperledger/fabric
# add by gexin, change the sources.list
COPY payload/sources.list /etc/apt/
RUN sudo apt-get update
# create needed directories
RUN mkdir -p \
$FABRIC_CFG_PATH \
/var/hyperledger/production
# fabric configuration files
ADD payload/sampleconfig.tar.bz2 $FABRIC_CFG_PATH
# fabric binaries
COPY payload/orderer /usr/local/bin
COPY payload/peer /usr/local/bin
# softhsm2
COPY payload/install-softhsm2.sh /tmp
RUN bash /tmp/install-softhsm2.sh && rm -f install-softhsm2.sh
# typically, this is mapped to a developer's dev environment
WORKDIR /opt/gopath/src/github.com/hyperledger/fabric
LABEL org.hyperledger.fabric.version=1.1.1-snapshot-feed00ad6 \
org.hyperledger.fabric.base.version=0.4.6
加入的三行就是我们用 自己的sources.list文件替换原有的文件。需要注意的是,这时我们还没有需要替换的文件呢。
在payload目录下,新建一个sources.list文件,在文件内容为阿里云的镜像源,如下所示:
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
总结
先是golang包的问题折腾了一下午,解决之后又遇到了镜像源的问题。
对golang以及docker的理解还不深入,需要继续在解决问题的过程中提高多这两个部分的认知。
Hyperledger Fabric(v1.1.0)编译时遇到的问题的更多相关文章
- Hyperledger Fabric(v1.2.0)代码分析1——channel创建
Hyperledger Fabric(v1.2.0)代码分析1--channel创建 0. e2e_cli Hyperledger Fabric提供了一个e2e的例子,该例中创建了一个基础的区块链网络 ...
- 使用docker加载已有镜像安装Hyperledger Fabric v1.1.0
背景 每次在新的服务器上安装Hyperledger Fabric网络时,通过fabric官方提供的脚本安装时,需要从网络上down下近10G的fabric相关镜像,这个过程是漫长及痛苦的,有时因网络问 ...
- Hyperledger Fabric v1.1.0安装记录(国内源版)
1. 安装虚拟机 虚拟机软件采用:VirtualBox 操作系统选择:Ubuntu 14.04 内存:4G CPU:2核 硬盘:20G 2.(可选)更改 ...
- 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性.性能与扩展性等方面的显著提升.阿里云容器服务区块链解决 ...
- 三、主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
- 安装hyperledger fabric V1.0.1
安装文档位置: https://github.com/hyperledger/fabric fabric代码托管地址 https://hyperledger-fabric.readthedoc ...
- 安装hyperledger fabric V1.0.0-beta
安装文档位置: https://github.com/hyperledger/fabric fabric代码托管地址 https://hyperledger-fabric.readthedoc ...
- Ubuntu下搭建Hyperledger Fabric v1.0环境
多次尝试才正常启动了Fabric,如遇到各种莫名错误,请参考如下一步步严格安装,特别用户权限需要注意. 一.安装Ubuntu16 虚拟机或双系统,虚拟机有VirtualBox或者VMware,Ub ...
- 003-主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
随机推荐
- Hive学习之路 (十)Hive的高级操作
一.负责数据类型 1.array 现有数据如下: 1 huangbo guangzhou,xianggang,shenzhen a1:30,a2:20,a3:100 beijing,112233,13 ...
- repulsion-loss
行人检测中的mr,fppi这些指标??? 3种距离:欧式距离.SmoothL1距离.IoU距离 总的loss公式:3个部分组成Lattr是预测框和匹配的gt尽可能接近,Lrepgt是预测框和周围没匹配 ...
- 图片保持比例,padding的妙用
要保持图片的比例不变 这一张图片在不同分辨率(1980px, 1364px,移动端400px)下均保持了一定的比例不变. 方法: padding以及margin的上下(margin-top | mar ...
- Mac app打包成dmg
1. 找到打包的app文件,在Xcode工程的Products目录下 2. 在桌面新建一个文件夹dmg,将app文件放进去. 3. 为了实现拖拽到Application的效果,需要在这个文件夹里放一个 ...
- java多线程之Callable、Future和FutureTask
Java并发编程:Callable.Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一 ...
- Java反射学习二
利用反射进行对象拷贝的例子 如下例程ReflectTester类进一步演示了Reflection API的基本使用方法. ReflectTester类有一个copy(Object object)方法, ...
- 743. Network Delay Time
题目来源: https://leetcode.com/problems/network-delay-time/ 自我感觉难度/真实难度: 题意: 分析: 自己的代码: class Solution: ...
- JSONP - 从理论到实践
同源策略 ajax之所以需要“跨域”,罪魁祸首就是浏览器的同源策略.即,一个页面的ajax只能获取这个页面相同源或者相同域的数据. 如何叫“同源”或者“同域”呢?——协议.域名.端口号都必须相同.例如 ...
- P1412 经营与开发
题目描述 4X概念体系,是指在PC战略游戏中一种相当普及和成熟的系统概念,得名自4个同样以“EX”为开头的英语单词. eXplore(探索) eXpand(拓张与发展) eXploit(经营与开发) ...
- Linux下onvif客户端获取ipc摄像头 GetServices:获取媒体地址(有的h265摄像头必须要这个接口)
GetServices:获取媒体地址(有些h265的摄像头必须用到这个接口,得到获取能力时没获取到的另一个媒体地址) 鉴权:但是在使用这个接口之前是需要鉴权的.ONVIF协议规定,部分接口需要鉴权,部 ...