Fabric是由五個核心工具模組組成的,這五個都是命令列工具,你可以從網路上直接抓各平台的執行檔,或是使用昨天那篇文章你抓下來的原始碼自行編譯,強烈建議自己編譯,因為可以確保你的版本匹配,免得產生那些很難解的怪問題。
模組名稱 | 功能說明 |
---|---|
peer | 節點模組,負責儲存區塊鏈資料,以及執行chaincode(每個peer都需要安裝一次) |
orderer | 負責將交易打包、排序 |
cryptogen | 產生PKI架構的認證文件(公鑰私鑰) |
configtxgen | 產生區塊跟交易的模組 |
configtxlator | 負責解析交易內容的模組 |
這邊會說明Linux平台(ubuntu)底下編譯的過程,請先確認你fabric的版本是否跟這系列文章的1.1版吻合
確認無誤後,由於fabric已經把Makefile寫好了,所以我們可以直接利用Make指令進行編譯作業,請注意,請務必參考昨天文章內容將該裝的環境都裝好,並確認GOPATH的設定是正確的。
make orderer
看到Binary available as build/bin/orderer
代表編譯成功,執行檔會放在fabric專案根目錄下的build/bin中。
make configtxgen
同樣的編譯成功後的執行檔也是放在build/bin中
make cryptogen
make configtxlator
make peer
本來上面都很順,結果這邊出現錯誤,畫面報錯顯示cp: cannot stat ‘build/docker/gotools/bin/protoc-gen-go’: No such file or directory
原來是因為我沒有安裝protoc-gen-go套件
go get github.com/golang/protobuf/protoc-gen-go
cd $GOPATH/src/github.com/golang/protobuf/
先利用Go語言提供的get指令將protoc-gen-go下載下來,然後我們需編譯他取得執行檔
make all
編譯成功後我們的執行檔會放在$GOBIN裏頭,不過在這邊我們需要將執行檔複製一份到fabric資料夾中才能順利編譯
cd $GOPATH/src/github.com/hyperledger/fabric
cp $GOPATH/bin/protoc-gen-go build/docker/gotools/bin/
上面都成功後,請確認現在的位置是在fabric根目錄下,然後我們再嘗試一次make peer
動拉~~~~不過有十五個步驟,這有點漫長....
老樣子,直到你看到這個
以上我們就完成了五個模組的編譯,現在來執行version命令檢查看看版本是不是我們要的!
cd $GOPATH/src/github.com/hyperledger/fabric/build/bin
執行./orderer version
版本1.1.0,正確無誤,其他的部分也依樣畫葫蘆
這五個工具都要確認版本喔!
以上我們已經將必要的核心模組編譯好了,不過還是不好用,畢竟我們還得到他bin目錄下執行,太麻煩了,所以接下來我們可以將build/bin目錄加入我們終端的PATH,這樣未來不管在哪個資料夾都能直接使用這幾個指令
我自己是用zsh,所以這邊我是修改vim ~/.zshrc
去達到這個效果,這邊就看你用的是哪一種Unix shell囉。
在./zshrc中加入這行export PATH="$HOME/go/src/github.com/hyperledger/fabric/build/bin:$PATH"
設定好了之後重開zsh,然後我們就能直接使用指令了,就像這樣
感謝你的耐心閱讀~~有任何問題歡迎在底下留言或私訊給我,謝謝各位大大
大大您好:
拍謝我對linux實在是太不熟了= =
cmd搞得我暈頭轉向阿 哈哈哈
請問一下 第一章圖中 第一行看起來有git控管 顯示版本的部分
是怎麼搞出來的XD
哦哦 那是有安裝外掛XD 話說那其實跟這篇文無關啊哈哈哈,我找一下教學給你
https://medium.com/statementdog-engineering/prettify-your-zsh-command-line-prompt-3ca2acc967f
linux 也可以用,可以把原本的改成zsh
大大您好:
我想請問一下我有照做您PO的Fabric並且有切換版本。不過我在版本檢查的時候怎麼是1.4.2版本XD
哈囉~請問有截圖或是更多資料嗎,通常你切版本之後就不會是1.42才對
多謝指教
哈囉,我這邊沒辦法看到你的過程所以我也無從判斷^^"....想請教你在make orderer的時候畫面上顯示的那些字,確定是在1.1嗎?
我說的是make過程中跑出來的那些訊息
哈囉,我這邊沒辦法看到你的過程所以我也無從判斷^^"....想請教你在make orderer的時候畫面上顯示的那些字,確定是在1.1嗎?
我說的是make過程中跑出來的那些訊息