基于Ubuntu安装HyperLedger/fabric1.0.0-beta

本文详细介绍如何在Ubuntu16.04上部署Hyperledger Fabric1.0, 包括安装Docker及Docker Compose、下载镜像、启动Fabric环境等步骤,并提供常见问题解决方案。

操作系统:Ubuntu 16.04
软件包:Hyperledger/fabric 1.0.0
以下命令要用root执行,或者使用sudo

1、安装docker

apt install curl
curl -fsSL https://get.docker.com/ | sh

修改Docker配置文件/etc/default/docker,增加下面内容

DOCKER_OPTS="--registry-mirror=http://a82cc970.m.daocloud.io"

这是国内镜像,否则docker pull的时候会很慢很慢

//启动服务 
systemctl   daemon-reload
systemctl   restart docker.service

如果遇到启动错误,如:
Failed to start Docker.service: Unit docker.service is masked.
执行下面的命令,再启动docker.service

systemctl unmask docker.service
systemctl unmask docker.socket

2、安装docker-compose

apt install python-pip
pip install docker-compose>=1.8.0

3、下载镜像

docker pull yeasy/hyperledger-fabric-base:0.8.4
docker pull yeasy/hyperledger-fabric-peer:0.8.4
docker pull yeasy/hyperledger-fabric-orderer:0.8.4
docker pull yeasy/hyperledger-fabric-ca:0.8.4
docker pull yeasy/blockchain-explorer:latest

docker tag yeasy/hyperledger-fabric-peer:0.8.4 hyperledger/fabric-peer
docker tag yeasy/hyperledger-fabric-orderer:0.8.4 hyperledger/fabric-orderer
docker tag yeasy/hyperledger-fabric-ca:0.8.4 hyperledger/fabric-ca
docker tag yeasy/hyperledger-fabric-base:0.8.4 hyperledger/fabric-baseimage
docker tag yeasy/hyperledger-fabric-base:0.8.4 hyperledger/fabric-ccenv:x86_64-1.0.0-preview
docker tag yeasy/hyperledger-fabric-base:0.8.4 hyperledger/fabric-baseos:x86_64-1.0.0-preview

也可以使用官方镜像
https://hub.docker.com/r/hyperledger

4、启动fabric

下载 Compose 模板文件

git clone https://github.com/yeasy/docker-compose-files

在根目录会生成docker-compose-files文件夹

进入/docker-compose-files/hyperledger/1.0目录,模板文件功能如下:
peers.yml:包含 peer节点的服务模板。
docker-compose.yml:启动1个最小化的环境,包括1个peer节点、1个Orderer节点、1个CA节点。

通过如下命令快速启动。

docker-compose up

但是执行这个命令有错误,修改了docker-compose.yml中peer的command,将 -o orderXXX去掉了

查看容器

docker ps

五、测试chaincode

连接容器

docker exec -it fabric-peer0 bash

连接后,部署一个测试程序

peer chaincode install -n test_cc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args":["init","a","100","b","200"]}' -v v0

peer chaincode instantiate -n test_cc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args":["init","a","100","b","200"]}' -v v0

peer chaincode query -n test_cc -c '{"Args":["query","b"]}'

如果提示下面的错误:
Error: Error endorsing invoke: rpc error: code = 2 desc = failed to obtain cds for test_cc - transaction
not found test_cc/testchainid
可能是因为没有执行 instantiate操作

如果提示下面的错误:
Error: Error endorsing chaincode: rpc error: code = 2 desc = Error installing chaincode code test_cc:1.0(chaincode
/var/hyperledger/production/chaincodes/test_cc.1.0 exits)
可能文件已经存在,可以移除再重新创建
docker rmi 库的名字

a向b转账10

peer chaincode invoke -n test_cc -c '{"Args":["invoke","a","b","10"]}'
<think>我们正在处理一个在Ubuntu虚拟机上执行make命令时出现的错误。错误信息显示: `/fibocom_2/qujunyang/desktop/mtk2739_AN778-CN-H881-00/fibocom-mtk/baseline/mtk2739_base/ap/build/tmp/work/aarch64-poky-linux/mcf/1.0.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc: Command not found` 这个错误表明在编译过程中,make尝试调用一个交叉编译器`aarch64-poky-linux-gcc`,但系统找不到这个命令。以下将逐步分析可能的原因和解决方案。 ### 1. **检查交叉编译器是否安装** 错误信息中提到的`aarch64-poky-linux-gcc`是一个针对ARM架构(aarch64)的交叉编译器。在编译嵌入式Linux软件(如基于Yocto或OpenEmbedded的项目)时常用。如果该编译器未正确安装或未在PATH中,则会出现此错误。 **解决方法:** - **确认交叉编译器是否安装**:检查错误路径中的目录是否存在该编译器。运行: ```bash ls /fibocom_2/qujunyang/desktop/mtk2739_AN778-CN-H881-00/fibocom-mtk/baseline/mtk2739_base/ap/build/tmp/work/aarch64-poky-linux/mcf/1.0.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc ``` 如果该文件不存在,说明交叉编译器未正确安装或构建。 - **重新初始化构建环境**:此项目可能使用类似Yocto的构建系统,它通过环境设置脚本(如`oe-init-build-env`)配置交叉编译器路径。确保已执行该脚本: ```bash source /path/to/yocto/poky/oe-init-build-env [build-directory] ``` 其中`build-directory`通常是`build`或`mtk2739_base/ap/build`(根据你的项目路径调整)[^1]。 ### 2. **检查环境变量PATH** 即使交叉编译器已安装,如果其路径未包含在PATH环境变量中,系统也无法找到它。 **解决方法:** - 临时添加交叉编译器路径到PATH: ```bash export PATH=$PATH:/fibocom_2/qujunyang/desktop/mtk2739_AN778-CN-H881-00/fibocom-mtk/baseline/mtk2739_base/ap/build/tmp/work/aarch64-poky-linux/mcf/1.0.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux ``` - 永久添加:将上述`export`命令添加到`~/.bashrc`或构建环境的配置脚本中。 ### 3. **检查构建脚本配置** 构建系统(如Makefile或Autotools)可能硬编码了错误的编译器路径。例如,Makefile中可能有类似: ```makefile CC = /absolute/path/to/aarch64-poky-linux-gcc ``` 若该路径与实际路径不符,则需修正。 **解决方法:** - 检查Makefile或`configure`脚本中的编译器设置。建议使用相对路径或变量(如`$(CC)`)代替绝对路径。 - 若使用Autotools,重新运行`./configure`并指定交叉编译器: ```bash ./configure --host=aarch64-poky-linux ``` ### 4. **验证SDK安装状态** 此错误路径中的`recipe-sysroot-native`暗示项目依赖Yocto SDK。可能的原因是: - SDK未安装安装不完整。 - 构建目录被移动导致路径失效。 **解决方法:** - 重新安装或激活SDK: ```bash /path/to/sdk/install-script.sh ``` 安装后,SDK会设置环境变量(如`OECORE_NATIVE_SYSROOT`)[^2]。 ### 5. **文件权限问题** 交叉编译器可能因权限不足无法执行: ```bash chmod +x /fibocom_2/.../aarch64-poky-linux-gcc ``` ### 6. **宿主系统兼容性** 如果交叉编译器是为其他Linux发行版(如CentOS)编译的,在Ubuntu上可能因动态库缺失而无法运行。使用`ldd`检查依赖: ```bash ldd /fibocom_2/.../aarch64-poky-linux-gcc ``` 若有`not found`的库,需安装兼容层(如使用`apt`安装所需库)或重新编译SDK[^3]。 ### 总结步骤 1. 确认交叉编译器的存在和可执行权限。 2. 确保PATH包含编译器目录。 3. 检查构建环境配置(如Yocto的环境初始化)。 4. 验证构建脚本(Makefile)中的编译器路径。 5. 解决可能的库依赖问题。 §§相关问题§§ 1. 如何安装Yocto项目的交叉编译器? 2. 如何在Ubuntu中解决动态库依赖问题? 3. 如何检查环境变量PATH的设置? 4. 什么是交叉编译?为什么在嵌入式开发中需要它? </think>### 分析路径错误:交叉编译器缺失的根本原因 您在Ubuntu虚拟机上遇到的错误核心是:**系统找不到指定的交叉编译器 `aarch64-poky-linux-gcc`**。该编译器是构建ARM架构(aarch64)嵌入式Linux软件的关键工具链。以下是详细原因和解决方案: --- ### 一、核心原因分析 1. **交叉编译器未安装** 错误路径显示编译器位于Yocto/OE构建系统的目录中: `.../recipe-sysroot-native/usr/bin/aarch64-poky-linux/` **问题本质**:这是Yocto项目生成的SDK路径,表明: - 您可能未正确安装或激活针对ARM64架构的交叉编译工具链 - 环境变量未正确配置,导致系统无法定位编译器 2. **构建环境未初始化** 典型Yocto项目要求先执行环境初始化脚本: ```bash source poky/oe-init-build-env [build-directory] ``` 如果跳过此步骤,`PATH`环境变量将不包含交叉编译器路径[^1]。 3. **路径被修改或失效** 错误显示的绝对路径包含用户名`qujunyang`,表明: - 项目是从其他机器迁移而来,路径未更新 - 构建缓存(`tmp/work`)中的路径与实际安装位置不匹配 --- ### 二、分步解决方案 #### ▶ 步骤1:确认交叉编译器存在性 ```bash # 检查编译器是否存在 ls -l /fibocom_2/qujunyang/desktop/.../aarch64-poky-linux-gcc # 若不存在,检查SDK安装路径 find / -name aarch64-poky-linux-gcc 2>/dev/null ``` #### ▶ 步骤2:修复环境变量(关键) ```bash # 加载Yocto环境(在项目根目录执行) source poky/oe-init-build-env mtk2739_base/ap/build # 验证PATH是否包含工具链 echo $PATH | grep aarch64-poky-linux ``` #### ▶ 步骤3:重新安装工具链(如缺失) ```bash # 安装Yocto基础工具链 sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf # 或安装完整SDK(推荐) ./poky-glibc-x86_64-arm-toolchain-aarch64-toolchain.sh # SDK安装脚本名可能不同 ``` #### ▶ 步骤4:修正构建配置 检查以下文件中的路径设置: 1. `mtk2739_base/ap/build/conf/local.conf` ```conf SDK_PATH = "/正确/的/SDK/路径" ``` 2. Makefile中的编译器定义: ```makefile CC = aarch64-poky-linux-gcc # 应使用相对路径或变量 ``` #### ▶ 步骤5:清理重建 ```bash # 清除无效缓存 rm -rf tmp/work # 完整重建 bitbake -c cleanall mcf && bitbake mcf ``` --- ### 三、预防措施 1. **使用容器化构建** 通过Docker固定构建环境: ```dockerfile FROM ubuntu:22.04 RUN apt-get update && apt-get install -y gcc-aarch64-linux-gnu ``` 2. **环境变量持久化** 在`~/.bashrc`添加: ```bash export PATH="$PATH:/opt/poky/3.1.17/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux" ``` 3. **验证工具链** 安装后执行: ```bash aarch64-poky-linux-gcc --version # 应输出类似:gcc (GCC) 11.3.0 ``` --- ### 根本结论 此错误是由 **Yocto项目环境未正确初始化** 和 **跨平台路径不一致** 导致的交叉编译器定位失败。通过初始化构建环境并修正路径配置可解决[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值