Hyperledger fabric 如何解决hyperledger结构上的错误?

Hyperledger fabric 如何解决hyperledger结构上的错误?,hyperledger-fabric,Hyperledger Fabric,在尝试遵循构建第一个网络的教程时,我得到了以下输出: $ ./byfn.sh -m generate 正在为通道“mychannel”生成证书和genesis块,CLI超时为“10000” 是否继续?Y 诉讼程序 其中:没有隐原(/c/users/ayush/fabric samples/first network/。/bin:/c/users/ayush/fabric samples/first network:c:/users/ayush/bin:/c/users/local/bin:/

在尝试遵循构建第一个网络的教程时,我得到了以下输出:

$  ./byfn.sh -m generate
正在为通道“mychannel”生成证书和genesis块,CLI超时为“10000” 是否继续?Y 诉讼程序 其中:没有隐原(/c/users/ayush/fabric samples/first network/。/bin:/c/users/ayush/fabric samples/first network:c:/users/ayush/bin:/c/users/local/bin:/usr/bin:/bin:/c/Program Files/Docker Toolbox:/c/users/ayush/bin:/mingw64/bin:/usr/bin:/c/users/ayush/bin:/c/ProgramData/Oracle/Java/Path:/c/程序文件/Docker/Docker/Resources/bin:/c/Windows/system32:/c/Windows:/c/Windows/system32/Wbem:/c/Windows/system32/WindowsPowerShell/v1.0:/c/程序文件(x86)/NVIDIA Corporation/PhysX/Common:/c/Program Files/Intel/WiFi/bin:/c/Program Files/Common/Intel/WirelessCommon:/cmd:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/system32/Wbem:/c/WINDOWS/system32/WindowsPowerShell/v1.0:/c/Gradle/Gradle-3.3/bin:/c/Program Files/nodejs:/c/Users/ayush/AppData/Local/Programs/Python/Python36/Scripts:/c/Users/ayush/AppData/Local/Programs/Python/Python36:/c/Users/ayush/AppData/Local/Microsoft/WindowsApps:/c/Python:/c/Program Files/Docker Toolbox:/c/Users/ayush/AppData/Roaming/npm:/usr/bin/vendor\u perl:/usr/bin/vendor\u perl:/usr/bin/vendor\u perl:/usr/bin/core\u perl) 找不到cryptogen工具。正在退出


问题是什么?我怎样才能解决它?

你问题的关键在于最后一句话:

找不到cryptogen工具。正在退出

在尝试使用
/byfn.sh
运行示例之前,您需要确保编译了
cryptogen
工具。只需从fabric主文件夹运行:

make cryptogen configtxgen peer orderer peer-docker orderer-docker tools-docker

更新


您缺少:“”,请参见此处如何获取它们。

不确定这是否仍然是一个问题。。。。。 您可以尝试使用@Artem已经提到的内容, 或
您可以将
…fabric samples/bin
文件夹添加到包含工具的路径中。如果您使用mac,请在终端中执行以下操作:

brew tap hyperledger/fabric

brew install fabric-tools
然后用
/byfn.sh-m generate命令重试

我现在得到了答案。 这个问题是由于缺少cryptogen造成的,cryptogen确实是一个命令工具。获取它的最简单方法是将特定于平台的二进制文件下载到本地机器中, 以下是上海:

cd fabric-samples
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap-1.0.1.sh | bash
此sh将下载一个bash文件,该文件将提取最新的Fabric docker图像和平台特定工具,其内容如下:

#!/bin/bash
#
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#

export VERSION=1.0.1
export ARCH=$(echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')" | awk '{print tolower($0)}')
#Set MARCH variable i.e ppc64le,s390x,x86_64,i386
MARCH=`uname -m`

dockerFabricPull() {
  local FABRIC_TAG=$1
  for IMAGES in peer orderer couchdb ccenv javaenv kafka zookeeper tools; do
      echo "==> FABRIC IMAGE: $IMAGES"
      echo
      docker pull hyperledger/fabric-$IMAGES:$FABRIC_TAG
      docker tag hyperledger/fabric-$IMAGES:$FABRIC_TAG hyperledger/fabric-$IMAGES
  done
}

dockerCaPull() {
      local CA_TAG=$1
      echo "==> FABRIC CA IMAGE"
      echo
      docker pull hyperledger/fabric-ca:$CA_TAG
      docker tag hyperledger/fabric-ca:$CA_TAG hyperledger/fabric-ca
}

: ${CA_TAG:="$MARCH-$VERSION"}
: ${FABRIC_TAG:="$MARCH-$VERSION"}

echo "===> Downloading platform binaries"
curl https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/${ARCH}-${VERSION}/hyperledger-fabric-${ARCH}-${VERSION}.tar.gz | tar xz

echo "===> Pulling fabric Images"
dockerFabricPull ${FABRIC_TAG}

echo "===> Pulling fabric ca Image"
dockerCaPull ${CA_TAG}
echo
echo "===> List out hyperledger docker images"
docker images | grep hyperledger*
现在它基于Fabric 1.0.1,您可以从以下位置找到此bash的最新版本:

sh执行完成后,当前目录中将有一个名为bin的文件夹,然后将该文件夹下的文件复制到可搜索文件夹中,例如

cp ./bin/*  $GOROOT/bin
然后,您可以通过type命令测试cryptogen是否存在:

which cryptogen

cryptogen命令位于安装(或解压缩)结构tarball的bin目录下。因此,您只需更新$PATH变量,以便shell知道cryptogen命令的位置。 此代码应适用于:

export "$PATH:/<home>/<fabric>/bin"
导出“$PATH:///bin”
其中
是您的主目录,例如
/home/sindelio

是结构的安装位置。

主要问题在于最后一行错误,该错误表示 “找不到cryptogen工具。正在退出”


请按照以下步骤解决此问题-

  • 使用命令下载特定于平台的二进制文件
  • curl-sSL | bash-s1.0.5

    运行该命令后,它将在bin目录下下载各种工具,如cryptogen、configtxgen等

  • 使用以下命令将bin目录添加到PATH变量
  • 导出路径=$PATH:[到bin目录的路径]

    现在再次尝试构建网络。
    我希望这对某人有所帮助。

    请按照以下步骤解决此问题:

    1.使用命令下载特定于平台的二进制文件

    curl-sSL | bash-s1.1.0“

    运行该命令后,它将在bin目录下下载各种工具,如cryptogen、configtxgen等

    1.使用以下命令将bin目录添加到PATH变量
    导出路径=。/bin:$PATH

    步骤1:
    cd结构样本

    步骤2:

    curl-sSLhttps://raw.githubusercontent.com/hyperledger/fabric/v1.0.5/scripts/bootstrap.sh |bash-s1.0.5

    步骤3:
    cd结构样本/第一个网络

    步骤4:
    /byfn.sh-m生成


    您将看到一个关于将发生什么的简要说明,以及一个是/否命令行提示。用y键响应或按回车键执行所述操作。

    除非您关闭终端,否则以下解决方案有效:


    export PATH=$PATH:PATH\u TO\u FABRIC\u SAMPLES/bin可能错过了此步骤

    下载特定于平台的二进制文件

    运行命令
    cd结构示例

    在cd之后将特定于平台的二进制文件下载到您的工作区中

    curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/v1.4.0/scripts/bootstrap.sh | bash
    

    确保您的二进制文件版本与您的配置文件匹配

    我遵循了这一点,但它说
    make:**没有规则将目标设置为“cryptogen”。停止。
    您需要获取二进制文件,在文档上的answer中发布了一个链接,解释了如何实现。请参阅更新,您需要获取特定于平台的二进制文件。您可以发布广告吗d关于您的设置的详细信息?更新了新位置。谢谢,在特定于平台的二进制文件没有回答之后,这对我来说很有效。