Ubuntu22.04手动安装fabric release-2.5版本

这个过程稍微有点复杂,但完整操作完成以后会对Fabric网络有更加深入的理解,方便后续自己手动搭建Fabric网络。这个过程需要手动逐个下载Fabric源代码、使用命令下载Fabric镜像和用Git下载例子程序。

Fabric源代码主要用途是用来编译cryptogen、configtxgen及configtxlator。 使用命令下载必要的Fabric镜像,基本镜像有peer、orderer、ca、tools、ccenv。例子是官方提供的Fabric案例。

1. 下载源码

将Fabric 代码按照Go 语言推荐方式进行存放,创建目录结构并切换到该目录下。具体命令如下:

# 创建目录
$ mkdir -p $GOPATH/src/github.com/Hyperledger
# 切换目录
cd $GOPATH/src/github.com/Hyperledger
# 下载fabric源码
git clone https://github.com/hyperledger/fabric.git
# 切换到fabric目录
cd fabric
# 切换到release-2.5 golang 需要1.19版本以上
git checkout -b release-2.5 origin/release-2.5

$GOPATH 为环境变量,具体指向的目录可通过echo $GOPATH 查询。

2.编译辅助工具

在 Linux 系统中,make 是一个用于自动化编译和构建软件的工具。它使用一个名为 Makefile 的配置文件来指导如何编译和链接程序。以下是 make 的一些关键点介绍:

什么是 Makefile?

Makefile 是一个包含了一系列指令的文本文件,这些指令定义了如何编译和链接程序。它允许开发者指定源文件、编译器选项、库依赖等,然后 make 根据这些指令自动执行构建过程。

Makefile 的基本结构

一个典型的 Makefile 包含以下部分:

  • 目标(Targets):通常是文件名,表示构建的结果,如可执行文件或对象文件。
  • 依赖(Dependencies):目标文件依赖的源文件或其他目标。
  • 规则(Rules):如何从依赖生成目标的命令序列。

使用 Makefile 的好处

  1. 自动化make 根据 Makefile 中定义的规则自动执行构建过程,无需手动编译和链接。
  2. 可重用性Makefile 可以被重复用于不同的项目,只需适当修改。
  3. 依赖管理make 可以检测文件的修改时间戳,只重新构建那些自上次构建以来已经发生变化的部分。
  4. 可配置性:通过参数和变量,Makefile 可以灵活地适应不同的构建需求。

基本的 make 命令

  • make:没有参数时,make 会尝试构建第一个目标。
  • make all:构建 Makefile 中定义的所有目标。
  • make clean:通常用于删除所有由 make 生成的文件,以便从头开始一个干净的构建。
  • make -jN-jN 参数允许 make 并行构建,N 是并行作业的数量。

示例 Makefile

# 定义编译器
CC=gcc# 定义编译选项
CFLAGS=-Wall -g# 定义目标
all: my_program# 目标依赖于源文件
my_program: main.o foo.o bar.o$(CC) $^ -o $@# 从 .c 文件生成 .o 文件的规则
%.o: %.c$(CC) $(CFLAGS) -c $< -o $@# 伪目标,用于清理构建文件
clean:rm -f my_program *.o

在这个示例中:

  • CC 变量定义了使用的编译器。
  • CFLAGS 变量定义了编译选项。
  • all 目标定义了默认的构建目标。
  • my_program 目标依赖于 main.ofoo.obar.o 这些对象文件。
  • %.o: %.c 规则定义了如何从 .c 文件生成 .o 文件。
  • clean 伪目标定义了如何清理构建过程中生成的文件。

make 是 Linux 和其他 Unix-like 系统上的一个强大工具,广泛用于软件开发和系统管理中。

make编译fabric

进入到fabric目录下,执行如下命令:

cd fabric
#生成组织结构和身份文件
$ make cryptogen
#生成配置区块和配置交易
$ make configtxgen
# 解读配置信息
$ make configtxlator

编译完成后,我们就会在/optgo/bin目录下看到cryptogen、configtxgen和configtxlator三个工具。

3.下载镜像文件

Docker镜像可以从源代码编译生成,也可以从DockerHub仓库中下载。目前Fabric的镜像有十几个,本教程用到的主要镜像文件如下:

  • hyperledger/ fabric-ca # fabric-ca 镜像
  • hyperledger/ fabric-tools # 安装了peer 、cryptogen、configtxgen 等,可作为测试客户端使用支持
  • hyperledger/fabric-ccenv #go语言的链码基础镜像,其中安装了chaintool 、Go 语言的链码shim 层
  • hyperledger/ fabric-orderer #orderer节点镜像
  • hyperledger/ fabric-peer #peer节点镜像

如果我们没有对Fabric源码进行修改,可以直接从Dockerhub拉取相关镜像,命令格式为: Docker pull <IMAGE_NAME:TAG>

要拉取使用到的镜像可以使用如下命令:

ARCH=x86_64
IMAGE_TAG=2.5
CA_VERSION=1.5.12# pull imagesdocker pull hyperledger/fabric-peer:$IMAGE_TAG \
&& docker pull hyperledger/fabric-orderer:$IMAGE_TAG \
&& docker pull hyperledger/fabric-ca:$CA_VERSION \
&& docker pull hyperledger/fabric-tools:$IMAGE_TAG \
&& docker pull hyperledger/fabric-ccenv:$IMAGE_TAG # add fabric-peer fabric-orderer fabric-ca fabric-toolsdocker tag  hyperledger/fabric-peer:$IMAGE_TAG hyperledger/fabric-peer \
docker tag  hyperledger/fabric-orderer:$IMAGE_TAG hyperledger/fabric-orderer \
docker tag  hyperledger/fabric-ca:$CA_VERSION hyperledger/fabric-ca \
docker tag  hyperledger/fabric-tools:$IMAGE_TAG hyperledger/fabric-tools

成功执行完命令之后,输入docker images就会出现如下镜像:
在这里插入图片描述

4. 下载例子程序

进入到Ubuntu用户目录下,输入以下命令下载例子程序,并切换与镜像文件相同的release-2.2版本(还没有release-2.5分支),确保程序可以正常运行。

# clone the hyperledger/fabric-samples repository
git clone https://github.com/hyperledger/fabric-samples.gitgit checkout -b release-2.2 origin/release-2.2

进入到fabric-examples目录下,可以看到fabcar和commercial paper两个例子,可以参考官方文档进行学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387997.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二叉搜索树(图解)

文章目录 二叉搜索树的概念插入查找二叉搜索树的删除操作删除单孩子和叶子节点。del节点有两个孩子用左子树的最大节点替代用右子树的最小节点替代 弊端 二叉搜索树的概念 对于每颗子树&#xff0c;左子树 < 根&#xff0c;右子树 > 根。 二叉搜索树有以下操作&#xff1…

代码随想录二刷(哈希表)

代码随想录二刷(哈希表) 三数之和思路反正对于我来说是真的难想出来。 若这道题还是采用哈希表的思路去做&#xff0c;非常麻烦&#xff0c;并且还要考虑去重的操作。所以这道题其实用双指针&#xff0c;是更方便的。 具体程序如下&#xff1a; class Solution:def threeSu…

Docker简介和Docker常见命令

目录 1. Docker 简介 1.1 Docker 的核心概念 1.2 Docker 的优势 1.3 Docker 工作流程 2. 常见命令 2.1 基本命令 2.2 镜像操作 2.3 容器操作 2.4 网络操作 2.5 卷操作 2.6 日志和监控 2.7 清理命令 3. 注意事项和最佳实践 3.1 镜像操作 3.2 容器操作 3.3 网络操…

2.1、matlab绘图汇总(图例、标题、坐标轴、线条格式、颜色和散点格式设置)

1、前言 在 MATLAB 中进行绘图是一种非常常见且实用的操作,可以用来可视化数据、结果展示、分析趋势等。通过 MATLAB 的绘图功能,用户可以创建各种类型的图形,包括线图、散点图、柱状图、曲线图等,以及三维图形、动画等复杂的可视化效果。 在绘图之前,通常需要先准备好要…

docker部署容器端口占用问题

docker部署容器端口占用问题 当我在使用 Windows 下使用 Docker Desktop 部署docker容器时经常性发生容器启动失败的提示&#xff0c;并且有的时候重启电脑后就能成功启动容器&#xff0c;这是因为 Hyper-V 引起的 保留端口&#xff0c;这部分端口将会被系统保留&#xff0c;无…

基于SpringBoot+Vue的企业客户信息反馈平台(带1w+文档)

基于SpringBootVue的企业客户信息反馈平台(带1w文档) 基于SpringBootVue的企业客户信息反馈平台(带1w文档) 企业客户信息反馈平台的开发运用java技术&#xff0c;MIS的总体思想&#xff0c;以及MYSQL等技术的支持下共同完成了该平台的开发&#xff0c;实现了企业客户信息反馈管…

【C++】哈希容器

unordered系列关联式容器 在之前的博文中介绍过关联式容器中的map与set&#xff0c;同map与set一样&#xff0c;unordered_set与unordered_set也是关联式容器。 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;查询效率可以达到logN&#xff1b;在…

安装 Terraform for Tencent 使用

第一步 &#xff1a;下载安装包 前往 Terraform 官网&#xff0c;使用命令行直接安装 Terraform 或下载二进制安装文件。 解压并配置全局路径 Linux/MAC&#xff1a;export PATH$PATH:${可执行文件所在目录} 例如&#xff1a;export PATH$PATH:$/usr/bin/terraform Win…

vue2学习 -- 核心语法

文章目录 前置简介1. 模板语法2. 数据2.1 数据绑定2.2 el与data的两种写法2.3 MVVM模型2.4 Object.defineProperty2.5 Vue中的数据代理 3. 事件3.1 事件处理3.2 事件修饰符3.3 键盘事件 4. 计算属性5. 监视(侦听)属性5.1 书写形式5.2 深度监视5.3 简写形式5.4 计算属性和监听属…

Go语言生成excel、将excel保存到本地、将多个excel表格压缩为压缩包、在压缩文件上传OSS删除本地excel文件和压缩包

最近在公司了个需求&#xff0c;主要涉及到文件导出&#xff0c;需要根据特定表格文件生成excel文件导出&#xff0c;同时对导出的excel临时保存本地&#xff0c;生成压缩包&#xff0c;将压缩包上传至OSS&#xff08;Object Storage Service&#xff09;后删除本地临时文件。下…

Go+Redis零基础到用户管理系统API实战_20240730 课程笔记

概述 如果您没有Golang的基础&#xff0c;应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728Go语言操作MySQL开发用户管理系统API教程_20240729Redis零基础快速入门_20231227 基础不好的同学每节课的代码最好配合视频进…

AI绘画模型之:VAE、SD 与 SD-XL

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

Linux常用工具

文章目录 tar打包命令详解unzip命令&#xff1a;解压zip文件vim操作详解netstat详解df命令详解ps命令详解find命令详解 tar打包命令详解 tar命令做打包操作 当 tar 命令用于打包操作时&#xff0c;该命令的基本格式为&#xff1a; tar [选项] 源文件或目录此命令常用的选项及…

19082 中位特征值

这个问题可以通过深度优先搜索&#xff08;DFS&#xff09;和优先队列来解决。我们首先使用DFS来计算每个节点的特征值&#xff0c;然后我们将所有节点的特征值放入一个优先队列中&#xff0c;然后我们从优先队列中取出中间的元素&#xff0c;这就是我们要找的中位数。 以下是…

如何选择合适的自动化测试工具!

选择合适的自动化测试工具是一个涉及多方面因素的决策过程。以下是一些关键步骤和考虑因素&#xff0c;帮助您做出明智的选择&#xff1a; 一、明确测试需求和目标 测试范围&#xff1a;确定需要自动化的测试类型&#xff08;如单元测试、集成测试、UI测试等&#xff09;和测试…

React-Native 宝藏库大揭秘:精选开源项目与实战代码解析

1. 引言 1.1 React-Native 简介 React-Native 是由 Facebook 开发的一个开源框架&#xff0c;它允许开发者使用 JavaScript 和 React 的编程模型来构建跨平台的移动应用。React-Native 的核心理念是“Learn Once, Write Anywhere”&#xff0c;即学习一次 React 的编程模型&am…

社区养老服务小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;服务人员管理&#xff0c;服务产品管理&#xff0c;服务预约管理&#xff0c;服务状态管理&#xff0c;服务退订管理&#xff0c;活动管理&#xff0c;视频管理 微信端账号功能包…

基于cubeMX的STM32的RTC实时时钟实现

1、在仪器仪表的项目开发中&#xff0c;时常需要设备显示当前的日期和时间&#xff0c;这时&#xff0c;可以使用STM32自带的RTC实时时钟模块来实现此功能。这里我们使用STM32F103RCT6单片机芯片为例。 2、cubeMX的设置 &#xff08;1&#xff09;RTC设置 &#xff08;2&…

民大食堂用餐小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商家管理&#xff0c;档口号管理&#xff0c;商家餐品管理&#xff0c;餐品种类管理&#xff0c;购物车管理&#xff0c;订单信息管理 微信端账号功能包括&#xff1a;系统首页&a…

yolov10来了!用yolov10训练自己的数据集(原理、训练、部署、应用)

一、引言 YOLOv9还没热乎呢&#xff0c;YOLOv10就出来了&#xff0c;太卷了&#xff01;太快了&#xff01; 自今年2月YOLOv9发布之后&#xff0c; YOLO&#xff08;You Only Look Once&#xff09; 系列的接力棒传到了清华大学研究人员的手上。YOLOv10推出的消息引发了AI界的…