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

操作系统: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>好的,我现在要解决用户遇到的Maven仓库中ND4J库文件损坏导致的“zip END header not found”错误。首先,我需要理解这个错误通常是什么原因引起的。根据错误信息,这通常是因为下载的JAR文件不完整或损坏,可能是在下载过程中网络中断,或者Maven仓库中的文件本身有问题。 接下来,我需要回忆一下Maven处理依赖的机制。Maven会从配置的仓库下载依赖项到本地仓库(通常是用户目录下的.m2文件夹)。如果本地仓库中的文件损坏,Maven在构建时会尝试使用这个损坏的文件,导致错误。因此,第一步应该是清除本地仓库中的相关文件,强制Maven重新下载。 用户提到的是nd4j-native-1.0.0-beta7-macosx-arm64.jar这个文件。我需要指导用户如何手动删除这个文件。根据引用[5],本地仓库的位置通常在用户目录下的.m2/repository目录中。因此,用户需要导航到该路径,找到对应的org/nd4j/nd4j-native目录,并删除损坏的JAR文件和相关的元数据文件,比如_remote.repositories或.lastUpdated,这些文件可能记录了下载状态,删除它们可以确保Maven重新下载。 接下来,考虑网络问题。如果用户的环境有代理或者网络限制,可能需要检查Maven的代理配置,或者尝试更换仓库镜像。例如,使用阿里云的镜像可能比默认的中央仓库更快更稳定。用户可以在Maven的settings.xml文件中添加镜像配置,如引用[2]中提到的仓库配置,但需要调整成正确的镜像地址。 另外,用户可能需要检查依赖的版本是否存在。如果版本号写错了,或者该版本在远程仓库中不存在,Maven也会下载失败。需要确认pom.xml中的nd4j-native版本是否正确,并检查Maven中央仓库或对应的仓库中是否存在该版本。 如果问题依旧,可能需要手动下载JAR文件并安装到本地仓库。用户可以从仓库网页直接下载正确的JAR文件,然后使用mvn install:install-file命令手动安装,如引用[1]提到的使用Maven而不是Gradle来处理快照版本,虽然这里不是快照,但手动安装的方法是类似的。 此外,检查项目配置是否有误。例如,是否错误地引用了本地仓库路径,或者仓库配置不正确。引用[2]中的Gradle发布脚本可能对用户当前的问题帮助不大,但仓库的配置部分可以参考,确保Maven的settings.xml中仓库地址正确。 最后,如果所有方法都无效,可能需要升级依赖版本,因为beta版本可能存在问题,或者联系库的维护者确认是否存在已知问题。用户也可以尝试使用ND4J的最新稳定版,避免使用可能存在问题的beta版本。 总结步骤:清除本地缓存、检查网络和仓库配置、手动下载安装、验证依赖版本,最后考虑升级版本。同时,确保引用了正确的解决方案,比如引用[4]中提到的处理缺失DLL的方法,但这里的问题不同,主要是文件损坏,所以重点在重新获取正确的JAR文件。</think>### 解决“zip END header not found”错误的逐步方案 #### 问题原因分析 该错误通常由以下原因导致: 1. **本地Maven仓库中的JAR文件损坏**(下载不完整或写入错误) 2. **远程仓库中的文件不完整**(罕见但可能) 3. **网络问题导致下载中断** 4. **依赖版本配置错误** --- ### 步骤一:清除本地仓库损坏文件 1. **定位本地Maven仓库路径** 默认路径为 `~/.m2/repository`(Windows为 `C:\Users\<用户名>\.m2\repository`)[^5]。 2. **手动删除损坏的ND4J文件** 执行以下操作: ```bash # 进入本地仓库目录 cd ~/.m2/repository # 删除nd4j-native相关文件 rm -rf org/nd4j/nd4j-native/1.0.0-beta7 ``` **关键操作**:同时删除同目录下的 `_remote.repositories` 或 `.lastUpdated` 文件,避免Maven跳过重新下载。 --- ### 步骤二:强制Maven重新下载依赖 1. **使用Maven命令清理并重新下载** 在项目中执行: ```bash mvn clean install -U ``` `-U` 参数强制更新快照和依赖。 --- ### 步骤三:检查仓库配置 1. **确认仓库地址正确性** 在 `settings.xml` 中检查是否包含ND4J的官方仓库: ```xml <repositories> <repository> <id>sonatype-nexus-snapshots</id> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </repository> </repositories> ``` [参考类似配置](https://oss.sonatype.org/service/local/staging/deploy/maven2)[^2]。 2. **使用镜像加速下载** 在 `settings.xml` 中添加阿里云镜像: ```xml <mirror> <id>aliyun</id> <mirrorOf>central</mirrorOf> <name>Aliyun Maven</name> <url>https://maven.aliyun.com/repository/central</url> </mirror> ``` --- ### 步骤四:手动下载并安装JAR文件 1. **从仓库网页直接下载** 访问 [Maven Central](https://repo1.maven.org/maven2/org/nd4j/nd4j-native/1.0.0-beta7/) 下载完整文件。 2. **手动安装到本地仓库** 执行命令: ```bash mvn install:install-file \ -Dfile=nd4j-native-1.0.0-beta7-macosx-arm64.jar \ -DgroupId=org.nd4j \ -DartifactId=nd4j-native \ -Dversion=1.0.0-beta7 \ -Dpackaging=jar ``` --- ### 步骤五:验证依赖版本 1. **检查`pom.xml`中的版本号** 确保版本 `1.0.0-beta7` 在远程仓库中存在: ```xml <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-native</artifactId> <version>1.0.0-beta7</version> </dependency> ``` --- ### 步骤六:升级依赖版本(可选) 若问题持续,可能是该版本存在兼容性问题。尝试升级到稳定版本: ```xml <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-native</artifactId> <version>1.0.0-M2</version> <!-- 最新稳定版 --> </dependency> ``` --- ### 总结 通过清理本地仓库、强制更新、检查仓库配置和手动安装,可解决99%的JAR文件损坏问题。若问题仍未解决,建议检查操作系统权限或联系ND4J社区[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值