我是Hyperleger Fabric的新手,正在try 做Using the Fabric test network个文档中的例子.我被困在通道上启动链码的阶段.即使我正确地调整了路径,我也得到了下面的错误.我无法从类似的问题中找出解决方案.

该命令如下:

Sudo./network.sh部署CC-c通道1-CCN BASIC-CCP../ASSET-TRANSFER-BASIC/chaincode-go-ccl Go

以下是输出:

> Using docker and docker-compose
deploying chaincode on channel 'channeluk1'
executing with the following
> - CHANNEL_NAME: channeluk1
> - CC_NAME: basic
> - CC_SRC_PATH: ../asset-transfer-basic/chaincode-go
> - CC_SRC_LANGUAGE: go
> - CC_VERSION: 1.0
> - CC_SEQUENCE: 1
> - CC_END_POLICY: NA
> - CC_COLL_CONFIG: NA
> - CC_INIT_FCN: NA
> - DELAY: 3
> - MAX_RETRY: 5
> - VERBOSE: false
> Vendoring Go dependencies at ../asset-transfer-basic/chaincode-go
~/go/src/github.com/umitkilic/fabric-samples/asset-transfer-basic/chaincode-go ~/go/src/github.com/umitkilic/fabric-samples/test-network
scripts/deployCC.sh: line 59: go: command not found
~/go/src/github.com/umitkilic/fabric-samples/test-network
> Finished vendoring Go dependencies
> + peer lifecycle chaincode package basic.tar.gz --path ../asset-transfer-basic/chaincode-go --lang golang --label basic_1.0
> + res=1
> ++ peer lifecycle chaincode calculatepackageid basic.tar.gz
Error: failed to read chaincode package at 'basic.tar.gz': open basic.tar.gz: no such file or directory
> + PACKAGE_ID=
> Error: failed to normalize chaincode path: failed to determine module root: exec: "go": executable file not found in $PATH
Chaincode packaging has failed
Deploying chaincode failed

我知道错误是说GO路径有问题,但路径没有问题.以下是围棋的一些输出.

命令:

转到环境

输出:

GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/umitkilic/.cache/go-build"
GOENV="/home/umitkilic/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/umitkilic/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/umitkilic/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/umitkilic/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/umitkilic/go/src/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build952499924=/tmp/go-build -gno-record-gcc-switches"

命令:

哪里go 了?

输出:

Go:/home/umitkiic/go/bin/go

(In 转到环境 output, GOPATH="/home/umitkilic/go" but in 哪里go 了? output it says Go:/home/umitkiic/go/bin/go. I'm not sure if these are in coherent.)

在我的~/.bashrc文件中,我有以下几行:

出口GOPATH=$HOME/GO 导出路径=$PATH:$GOPATH/bin

我的 struct 示例目录为Home/umitkilic/go/src/github.com/umitkilic/fabric-samples

我的GO版本是go1.13.15 Linux/AMD64.

我try 在/usr/local/go中安装GO语言,但结果是相同的错误.

你能帮帮我吗?

Update: 我按照他们的指示使用了之前的最新版本,比如official website版的go1.20.4.结果是同样的错误.

顺便说一句,我使用以下命令打印Fabric对等版本:

 docker exec -it cli bash
 root@bb4a6d6eed2f:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer version

输出为:

peer:
 Version: v2.5.0
 Commit SHA: bd8e248
 Go version: go1.20.2
 OS/Arch: linux/amd64
 Chaincode:
  Base Docker Label: org.hyperledger.fabric
  Docker Namespace: hyperledger

它说Go的版本是go1.20.2,但我从来没有下载和安装过这个版本的Go.也许这会自动与Docker中的织物样本一起安装.我不确定这是否与这个错误有关.

推荐答案

Sudo./network.sh...

问题是您以root用户(具有sudo用户)的身份运行脚本.并且root个用户有自己的环境变量.可以验证go命令不在root$PATH中,如下所示:

$ sudo sh
# echo $PATH

root和当前登录用户之间可能存在太多环境差异.例如,root用户具有可能影响go命令的不同$GOENV.因此,我的建议是:不要费心修改root$PATH,而是run the Docker daemon as a non-root user(另请参阅这个问题:https://askubuntu.com/questions/477551/how-can-i-use-docker-without-sudo).

然后在没有sudo的情况下执行脚本:

./network.sh deployCC -c channeluk1 -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

Go相关问答推荐

将类型定义为泛型类型实例化

在Golang中Mergesort的递归/并行实现中出现死锁

显示GUI时后台处理功能

JWT 如何解析声明有效性和错误?

未实现的 desc = 未知服务 pb.AuthService 我的简单身份验证服务器上出现错误

在 go 中,将接收器 struct 从值更改为指针是否向后兼容?

这是泛型的有效用例吗?

一个Go module可以和之前的非module模块发布在同一个路径下吗?

helm :将 YAML 转换为 JSON 时出错:yaml:第 xx 行:未找到预期的密钥

无法使用 Golang 扫描文件路径

Golang 构建多平台问题

go:embed 文件扩展名模式

Golang 工作池实现意外工作

Golang ACMEv2 HTTP-01 挑战不挑战服务器

如何从 Go 1.18 中的单个方法返回两种不同的具体类型?

显示作为服务帐户身份验证的谷歌日历事件 - Golang App

如何在 docker 文件中安装 golang 包?

gopls 为 github.com/Shopify/sarama 返回错误gopls: no packages returned: packages.Load error

AWS EKS 上的 Golang REST API 部署因 CrashLoopBackOff 而失败

在 Go 中表达函数的更好方法( struct 方法)