无法构建“chaintool / example02”

时间:2016-12-21 20:46:43

标签: go hyperledger-fabric

我正在尝试按照Chaincode Development Environment上的说明在我的本地环境中设置hyperledger。

不幸的是,我对 golang 完全不熟悉。当我遇到尝试构建“ chaintool / example02 ”的错误时,我不知道如何进一步继续 - 我应该忽略这个问题还是首先要修复一些问题?例如,使用某些选项运行make等等...如何才能获得缺少的导入?

输出如下:

hyper-00:chaincode hyper$ pwd
 /Users/hyper/Projects/blockchain/src/github.com/hyperledger/fabric/examples/chaincode/chaintool/example02/src/chaincode

hyper-00:chaincode hyper$ go build ./
    chaincode_example02.go:24:2: cannot find package "hyperledger/cci/appinit" in any of:
        /Users/hyper/Projects/blockchain/src/github.com/hyperledger/fabric/vendor/hyperledger/cci/appinit (vendor tree)
        /usr/local/go/src/hyperledger/cci/appinit (from $GOROOT)
        /Users/hyper/Projects/blockchain/src/hyperledger/cci/appinit (from $GOPATH)
    chaincode_example02.go:25:2: cannot find package "hyperledger/cci/org/hyperledger/chaincode/example02" in any of:
        /Users/hyper/Projects/blockchain/src/github.com/hyperledger/fabric/vendor/hyperledger/cci/org/hyperledger/chaincode/example02 (vendor tree)
        /usr/local/go/src/hyperledger/cci/org/hyperledger/chaincode/example02 (from $GOROOT)
        /Users/hyper/Projects/blockchain/src/hyperledger/cci/org/hyperledger/chaincode/example02 (from $GOPATH)
    chaincode_example02.go:26:2: cannot find package "hyperledger/ccs" in any of:
        /Users/hyper/Projects/blockchain/src/github.com/hyperledger/fabric/vendor/hyperledger/ccs (vendor tree)
        /usr/local/go/src/hyperledger/ccs (from $GOROOT)
        /Users/hyper/Projects/blockchain/src/hyperledger/ccs (from $GOPATH)
hyper-00:chaincode hyper$ 

我的$ GOPATH给出:

hyper-00:~ hyper$ echo $GOPATH 
/Users/hyper/Projects/blockchain

<小时/> [2017-01-02编辑]

我再次重复了repo克隆程序。 我认为我的错误是我从GitHub中删除了一个错误的来源 - 可能是“ master ”,而不是“ v0.6 ”。

我做了什么,编译现在是:

$ sudo apt install golang-go

$ gedit .profile

export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/Projects/blockchain    

$ . ~/.profile

$ mkdir -p $GOPATH/src/github.com/hyperledger/

$ cd $GOPATH/src/github.com/hyperledger

$ git clone -b v0.6 http://gerrit.hyperledger.org/r/fabric

$ cd ~/Projects/blockchain/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 

$ go build

2 个答案:

答案 0 :(得分:2)

github.com/hyperledger/fabric应该在其vendor/文件夹中包含所有这些依赖项,或者将示例放在带有供应商文件夹的自己的repo中,所以这看起来不像是你的问题。

您可以通过为所有缺失的软件包运行go get x y z来修复它,或尝试使用销售工具来获取它们。

有许多选择可供出售,但没有&#34;官方&#34;选择到明年。我更喜欢govendor。我还没试过这个特别的回购,但你可以试试:

go get -u github.com/kardianos/govendor
cd /Users/hyper/Projects/blockchain/src/github.com/hyperledger/fabric/
govendor fetch -v +missing

答案 1 :(得分:2)

HyperLedger团队提供了非常好的文档,介绍了如何以允许用户记录API(通过链代码接口或CCI)的方式使用chaintool。如果没有这个,链代码的使用者必须检查源代码以了解如何编写REST调用。好主意。

这种构建链代码的方法需要您下载github.com/hyperledger/cci和github.com/hyperledger/ccs以驻留在$ GOPATH中的github.com/hyperledger/fabric旁边。不幸的是,我没有看到任何可以下载的存储库(在github或gerrit上)。

此外,我只看到了一个例子(到目前为止)如何使用带有cci和ccs的chaintool的例子,这是一个链工具/ example02 ......并且由于这些丢失的超级包,它不能编译。

在以下位置有关于具有cci / ccs支持的chaintool的文档:

但似乎此文档已复制到以下位置,并从&#39; chaintool&#39;重新命名。 to&#39; openblockchain编译器&#39; (或OBCC)并标记为正在进行的工作&#39;:

因此,我倾向于认为chaintool / example02不是目前支持的构建链代码的方法......至少在OBCC正式可用之前。