【问题标题】:Fabric Go chaincode install error: Error: error getting chaincode bytes: 'go list'Fabric Go 链码安装错误:错误:获取链码字节时出错:'go list'
【发布时间】:2024-01-12 18:30:01
【问题描述】:

我尝试在对等 docker 容器中安装 golang 链代码,但出现以下错误。安装在 nodeJs 链码上运行良好。

volumes:
  - ./msps/peer4.org1/msp:/etc/hyperledger/fabric/msp
  - ../go-chaincode/dataCC:/opt/gopath/src/github.com/org1/dataCC
  - ./peer4:/opt/gopath/src/github.com/hyperledger/fabric/peer/files
  -  peer4.org1.com:/var/hyperledger/production

go-chaincode/dataCC 目录包含链码的 go 模块。

命令

peer lifecycle chaincode package $DATA_CHAINCODETAR_FILE --path $CORE_PEER_CHAINCODE_ID_PATH  --lang golang --label datacc_1

日志

2020-08-08 02:54:16.263 UTC [bccsp] GetDefault -> DEBU 002 Before using BCCSP, please call InitFactories(). Falling back to bootBCCSP.
2020-08-08 02:54:16.270 UTC [main] InitCmd -> DEBU 003 peer lifecycle chaincode package does not need to init crypto

错误:

error getting chaincode bytes: 'go list' failed: exec: "go": executable file not found in $PATH

码头集装箱

/opt/gopath/src/github.com/hyperledger/fabric/peer # go list
sh: go: not found

【问题讨论】:

  • 你试过了吗?

标签: docker go hyperledger-fabric


【解决方案1】:

我尝试复制问题并成功安装和实例化链代码。现在,这可能不是解决此问题的最佳方法,但它确实对我有用。

  • 使用命令docker exec -it container_name bashbash/sh,根据容器的操作系统)进入您的 peer/cli 容器。

  • here 安装 go 二进制文件并按照所有安装说明进行操作。确保按照附加链接中的示例检查 go 是否已安装。

  • 运行 mkdir -p /root/go/src 并将您的链代码文件夹复制到此目录中。

  • 安装/打包/实例化您的链代码。

在安装/打包链码之前,请确保将环境变量CORE_PEER_MSPCONFIGPATH 设置为管理员的msp 目录。默认路径为CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp

试试这个方法,看看它是否适合你。

每当我发现有用或更好的解决方案时,我都会更新此答案。

【讨论】:

  • 您好 Kartik,感谢您回答问题。在我将它与 cli 容器打包后,问题得到了解决。看起来所有其他语言的链码都可以通过对等容器打包,除了 golang。 golang只能通过cli打包
  • 您可以在此处添加自己的答案,以帮助将来面临此问题的人。
【解决方案2】:

执行以下命令,然后重试部署链码:

$go env GOPROXY=https://goproxy.io,direct
$go env GO111MODULE=on

如果上面的命令没有正常运行,那么执行下面的命令。

$ export GO111MODULE=on
$ export GOPROXY=https://goproxy.cn

供参考:https://goproxy.cn/

【讨论】: