iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 4
0

編譯工具

Fabric是由五個核心工具模組組成的,這五個都是命令列工具,你可以從網路上直接抓各平台的執行檔,或是使用昨天那篇文章你抓下來的原始碼自行編譯,強烈建議自己編譯,因為可以確保你的版本匹配,免得產生那些很難解的怪問題。

五個模組的介紹如下

模組名稱 功能說明
peer 節點模組,負責儲存區塊鏈資料,以及執行chaincode(每個peer都需要安裝一次)
orderer 負責將交易打包、排序
cryptogen 產生PKI架構的認證文件(公鑰私鑰)
configtxgen 產生區塊跟交易的模組
configtxlator 負責解析交易內容的模組

來編譯屬於你平台的Fabric吧

這邊會說明Linux平台(ubuntu)底下編譯的過程,請先確認你fabric的版本是否跟這系列文章的1.1版吻合

https://ithelp.ithome.com.tw/upload/images/20181019/201114262knFR3mREt.png

確認無誤後,由於fabric已經把Makefile寫好了,所以我們可以直接利用Make指令進行編譯作業,請注意,請務必參考昨天文章內容將該裝的環境都裝好,並確認GOPATH的設定是正確的。

編譯orderer

make orderer

https://ithelp.ithome.com.tw/upload/images/20181019/20111426DcqqKJLGZh.png

看到Binary available as build/bin/orderer代表編譯成功,執行檔會放在fabric專案根目錄下的build/bin中。

編譯configtxgen

make configtxgen

https://ithelp.ithome.com.tw/upload/images/20181019/20111426HRpyy28JhK.png

同樣的編譯成功後的執行檔也是放在build/bin中

編譯cryptogen

make cryptogen

https://ithelp.ithome.com.tw/upload/images/20181019/20111426tSm3hiKdps.png

編譯configtxlator

make configtxlator

https://ithelp.ithome.com.tw/upload/images/20181019/20111426rtmZ6wurLb.png

編譯peer

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
https://ithelp.ithome.com.tw/upload/images/20181019/20111426jPBegTCxOp.png
動拉~~~~不過有十五個步驟,這有點漫長....
老樣子,直到你看到這個
https://ithelp.ithome.com.tw/upload/images/20181019/201114262lRp3QfHPS.png
以上我們就完成了五個模組的編譯,現在來執行version命令檢查看看版本是不是我們要的!

檢查版本

cd $GOPATH/src/github.com/hyperledger/fabric/build/bin
執行./orderer version

https://ithelp.ithome.com.tw/upload/images/20181019/20111426yLBbL4FOn8.png

版本1.1.0,正確無誤,其他的部分也依樣畫葫蘆

https://ithelp.ithome.com.tw/upload/images/20181019/20111426RQzf9gwWIh.png

https://ithelp.ithome.com.tw/upload/images/20181019/20111426t9xFGxcR5o.png

https://ithelp.ithome.com.tw/upload/images/20181019/20111426FUxQp9TM5j.png

https://ithelp.ithome.com.tw/upload/images/20181019/20111426s2p1WVdnBP.png

這五個工具都要確認版本喔!

下一步~

以上我們已經將必要的核心模組編譯好了,不過還是不好用,畢竟我們還得到他bin目錄下執行,太麻煩了,所以接下來我們可以將build/bin目錄加入我們終端的PATH,這樣未來不管在哪個資料夾都能直接使用這幾個指令

我自己是用zsh,所以這邊我是修改vim ~/.zshrc去達到這個效果,這邊就看你用的是哪一種Unix shell囉。

在./zshrc中加入這行
export PATH="$HOME/go/src/github.com/hyperledger/fabric/build/bin:$PATH"

設定好了之後重開zsh,然後我們就能直接使用指令了,就像這樣

https://ithelp.ithome.com.tw/upload/images/20181019/20111426uxNOWyOYeN.png

感謝你的耐心閱讀~~有任何問題歡迎在底下留言或私訊給我,謝謝各位大大


上一篇
Fabric 環境安裝
下一篇
核心模組指令初探
系列文
HyperLedger Fabric 30天聯盟鏈實戰5
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
cheriish2001
iT邦新手 5 級 ‧ 2018-10-24 16:45:46

大大您好:

拍謝我對linux實在是太不熟了= =

cmd搞得我暈頭轉向阿 哈哈哈

請問一下 第一章圖中 第一行看起來有git控管 顯示版本的部分

是怎麼搞出來的XD

洪嘉隆 iT邦新手 5 級 ‧ 2018-10-24 20:18:48 檢舉

哦哦 那是有安裝外掛XD 話說那其實跟這篇文無關啊哈哈哈,我找一下教學給你
https://medium.com/statementdog-engineering/prettify-your-zsh-command-line-prompt-3ca2acc967f

洪嘉隆 iT邦新手 5 級 ‧ 2018-10-24 20:19:44 檢舉

linux 也可以用,可以把原本的改成zsh

0
larry50510
iT邦新手 5 級 ‧ 2019-07-16 17:43:00

大大您好:
我想請問一下我有照做您PO的Fabric並且有切換版本。不過我在版本檢查的時候怎麼是1.4.2版本XD

看更多先前的回應...收起先前的回應...
洪嘉隆 iT邦新手 5 級 ‧ 2019-07-17 16:39:48 檢舉

哈囉~請問有截圖或是更多資料嗎,通常你切版本之後就不會是1.42才對

https://ithelp.ithome.com.tw/upload/images/20190717/20104432VRgTD5nOeD.jpg

多謝指教

洪嘉隆 iT邦新手 5 級 ‧ 2019-07-22 13:49:55 檢舉

哈囉,我這邊沒辦法看到你的過程所以我也無從判斷^^"....想請教你在make orderer的時候畫面上顯示的那些字,確定是在1.1嗎?

我說的是make過程中跑出來的那些訊息

洪嘉隆 iT邦新手 5 級 ‧ 2019-07-22 13:49:58 檢舉

哈囉,我這邊沒辦法看到你的過程所以我也無從判斷^^"....想請教你在make orderer的時候畫面上顯示的那些字,確定是在1.1嗎?

我說的是make過程中跑出來的那些訊息

我要留言

立即登入留言