手把手教你編譯fabric

2020-10-24 俊語

前言

之前一直在使用fabric編譯好的鏡像,這次想自己去手動編譯下fabric的源碼,去生成peer,orderer這些二進位文件以及cryptogen這些工具和docker鏡像。

如果網絡沒有問題的話,在fabric目錄下,使用makefile,直接make all即可。

但是做的時候,才知道由於國內網絡的原因,很多庫都不能使用,造成編譯失敗。在網絡上也沒找到很好的貼子,官方的文檔,也沒有詳細的描述,可能是因為簡單吧,網絡好的時候,直接就可以成功的。

現把我踩坑的記錄整理如下:

1. 環境變量

本文是基於ubutu 18.04,Fabric v1.3.0。

環境變量的設置,不用詳細的描述,需要下載curl,git,node.js,docker,docker-compose等工具,不會的童鞋可以自己百度。

我想說下go環境的變量的配置,其實百度上的教程挺多的,但是都是抄來抄去的,按照這樣做並不好,我先來貼出來我的,再來進行詳細的解釋(來源於官網)。

export GOPATH=/opt/gopath

export PATH=$PATH:/opt/go/bin

第二行設置的是go的安裝目錄,我的目錄是/opt/go,我們需要把go的bin目錄設置倒環境變量PATH中。在第一行我設置的是GOPATH,GOPATH是go的工作目錄。在go1.8之後,如果不設置這個值的話,默認目錄是~/go。還需要注意的一點是go的工作目錄不能和安裝目錄不能一樣。(插一句題外話,工作目錄用來存放Go的源碼,Go的可運行文件以及相應的編譯之後的包文件,即src,bin,pkg。)

注意:GOPATH不需要設置到PATH中,設置好GO的安裝目錄後,會自動尋找GOPATH。

GOPATH官方

2 第三方包的下載

此外,Fabric使用Go開發,使用到了一些第三方工具,我們需要提前下載好。

mkdir –p $GOPATH/src/golang.org/xcd $GOPATH/src/golang.org/xgit clone https://github.com/golang/tools.git

即使下載好上面的tools工具,還是不夠,我們還是需要下載第三方的go管理工具,gopm

go get -u github.com/gpmgo/gopm

接下來,我們就可以使用gopm工具安裝需要使用到的go包。

建議:在下載下面這些包的時候,我們首先可以使用go get來下載安裝,這樣是比較方便的。gopm則需要兩步,首先是gopm get ...,然後是go install...。

是這樣的,舉個例子:

gopm get -g -d golang.org/x/tools/cmd/goimports

go install golang.org/x/tools/cmd/goimports

接下來,我們需要安裝所需要的工具,注意,如果某個包下載失敗,可以使用gopm的方法。

go get github.com/kardianos/govendor

go get github.com/golang/lint/golint

go get golang.org/x/tools/cmd/goimports

go get github.com/onsi/ginkgo/ginkgo

go get github.com/axw/gocov/...

go get github.com/client9/misspell/cmd/misspell

go get github.com/AlekSi/gocov-xml

go get github.com/golang/protobuf/protoc-gen-go

讓人十分噁心的是github.com/golang/lint/golint這個包,使用go get和gopm get都無法下載。

我們可以先在GitHub上下載原始碼,然後在執行go install進行安裝。

此外,我們還需要下載libltdl-dev這個庫:

sudo apt-get install libltdl-dev

3. Fabric的編譯

3.1 Fabric代碼的下載:

mkdir -p ~/gopath/src/github.com/hyperledger cd ~/gopath/src/github.com/hyperledger git clone https://github.com/hyperledger/fabric.gitcd fabricgit checkout v1.3.0

這些做完之後,我們需要把上面生成的二進位文件,拷貝到 /opt/gopath/src/github.com/hyperledger/fabric/.build/bin

和/opt/gopath/src/github.com/hyperledger/fabric/build/docker/gotools/bin目錄下。

3.2 編譯二進位文件

3.2.1 編譯相關包

我們使用下面的命令,make release來生成相關的包。

我們生成了cryptogen,configtxlator,cryptogen,orderer和peer等相關二進位文件。可以把他們拷貝倒build/docker/gotools/bin目錄下,用於後面的使用。

3.2.2 編譯基礎鏡像

接下來我們需要構建fabric-ccenv和fabric-javaenv鏡像,這兩個鏡像的構建也是十分噁心的。

需要首先下載fabric-baseimage鏡像,一般這個鏡像是沒任何問題的,問題的關鍵在於chaintool,這個很容易就掛掉了。掛掉的時候,我們可以手動去下載。

不過,這個地方給了我們網址,我們可以手動去下載。

https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/chaintool-1.0.1/hyperledger-fabric-chaintool-1.0.1.jar

下載後放到.build/bin下即可。注意選擇適合自己的版本。

接著我們使用make peer命令即可下載進行構建,會先自動下載fabric-ccenv和fabric-javaenv。

3.2.3 docker鏡像的生成

如果前面沒有失敗的話,會生成各種二進位文件,我們需要把這些二進位文件打包到docker鏡像中。

為了方便,我們可以直接使用命令make docker即可構建所需的docker鏡像,我們也可以使用

make orderer-docker,make peer-docker,make tools-docker來分別進行構建。

我們來看下,最後成功構建的鏡像:

最後我們來看下docker鏡像之間的各種以來關係:

4. 總結

經過上面的實操,發現真的去構建還是比較麻煩的,官方沒有詳細的文檔也描述,網上的博客大都零零星星。需要自己不斷的踩坑。

另外,當需要安裝軟體的時候,我們最好去官方的文檔,這樣不會出錯,因為網上的博客的問題在於其版本可能不對,存在某個依賴包版本錯誤的問題,為以後的開發埋下隱患。

相關焦點

  • 手把手教你怎麼操作
    中新經緯記者手把手來教你→ 打工人注意了,2021年度個稅專項附加扣除開始確認了。按照規定,每年12月份要對次年享受專項附加扣除的內容進行確認,確認後,才可在扣除年度生效。怎麼操作?中新經緯記者手把手來教你→ 打工人注意了,2021年度個稅專項附加扣除開始確認了。
  • fabric升級教程
    然後編譯orderer和peer二進位文件。我們將通過cli命令來操作。啟動fabric 1.3清除環境:.升級CouchDBfabric1.4中支持CouchDB2.0.0了。停止CouchDB備份數據使用v2.0.0的二進位文件或者docker鏡像重啟CouchDB升級ChaincodesUpgrade Chaincodes with vendored shim如果你的Chaincode
  • 圖形化手把手教你創建Oracle資料庫實例並認證是否成功
    打開Database Configuration Assistant 工具/或者也可以直接在cmd命令行上輸入dbca然後回車圖形化手把手教你創建Oracle資料庫實例並認證是否成功2、打開窗口後點擊下一步圖形化手把手教你創建Oracle資料庫實例並認證是否成功
  • 手把手教你搭建Python3開發環境
    接下來我將給大家展示一些魔法科技:手把手教你存儲高清的風景照片手把手教你批量修改文件名稱手把手教你畫小豬佩奇是不是有點小激動,歡迎在下方添加您的評論,告訴我您想做什麼,我可以滿足您的小心思哦。歡迎關注我,獲取更多的小魔法。
  • Centos8部署超級帳本(Fabric v2.2)
    解決方法:進入阿里雲鏡像地址https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/找到你想要的或者最新的包/fabric/scripts/fabric-samples/test-network/..
  • 零基礎也不怕,手把手教你寫網站代碼,我的第一個網站
    零基礎也不怕,手把手教你寫網站代碼,網站就像房子一樣,有固定的結構。零基礎也不怕,手把手教你寫網站代碼,零基礎也不怕,手把手教你寫網站代碼,零基礎也不怕,手把手教你寫網站代碼,代碼運行後如圖所示下圖所示:
  • 手把手教你
    手把手教你 2020-11-09 17:31 來源:澎湃新聞·澎湃號·政務
  • 手把手教你學ELISA、PCR、免疫組化
    1.手把手教你學ELISAELISA的基礎是抗原或抗體的固相化及抗原或抗體的酶標記。結合在固相載體 表面的抗原或抗體仍保持其免疫學活性,酶標記的抗原或抗體既保留其免疫學活性,又保留酶的活性。2.手把手教你學PCR實時螢光定量PCR,簡稱RT-QPCR,屬於Q-PCR的一種,目前該技術已得到廣泛應用,如:擴增特異性分析、基因定量分析、基因分型、SNP分析等。
  • 手把手教你!
    手把手教你!手把手教你!》
  • 手把手教你Win10系統怎麼安裝字體
    手把手教你Win10系統怎麼安裝字體時間:2017-07-27 15:29   來源:三聯   責任編輯:沫朵 川北在線核心提示:原標題:手把手教你Win10系統怎麼安裝字體 新安裝了Win10系統,對新系統的操作不熟悉。想要使用比較個性的字體,但是卻不知道如何安裝更換新的系統字體。
  • 手把手教你520怎麼說暖心情話|手把手|教你-滾動讀報-川北在線
    手把手教你520怎麼說暖心情話時間:2020-05-20 11:31   來源:今日頭條   責任編輯:莫小煙 川北在線核心提示:原標題:手把手教你520怎麼說暖心情話 1、愛再續情難移,只因有你,挎上美麗摘下無趣;心不變人不棄,只因有你,捧起幸福放下愁緒;我心依舊愛你,真愛頂天立地,5.20我愛你,親愛的,愛你此生不離不棄
  • fabric國密算法的改造
    準備條件可以編譯fabric的主機環境,如ubuntu或者osx安裝git環境拉取並且切換到所需要的fabric版本說明:本文是基於fabric release-1.3。/fabric-sm-patch/fabric-sm-patchmake [dockernative]使用make編譯國密版native或者docker鏡像推薦使用docker鏡像方式,其中自帶bccsp密碼插件若使用native方式運行,請注意在peer或者orderer啟動時,配置config文件中bccsp密碼插件的位置(peer對應core.yaml, orderer對應orderer.yaml
  • 手把手教你辦退稅
    手把手教你辦退稅 2020-06-16 12:25 來源:澎湃新聞·澎湃號·政務
  • 手把手教你解決空調自動開機
    接下來,手把手教大家解決大金空調自動開機。 手把手教大家解決大金空調自動開機 遇見大金空調自動開機,可以按照以下步驟進行處理: 1、檢查空調是否設定定時開關機,如果設定了,空調自動開機也就屬於正常現象了
  • 重拾童年的記憶 手把手教你DIY一臺GameBoy
    重拾童年的記憶 手把手教你DIY一臺GameBoy 2014-07
  • 手把手教你搭建HEXO免費博客(三)
    手把手教你搭建HEXO+Github博客 (系列教程三)為什麼推薦hexo+github?最重要兩點:簡單、免費安裝HEXO先在本地新建個blog文件夾(隨意)在cmd命令行進入到blog文件夾下。安裝好後輸入hexo g生成命令輸入hexo d部署到github第一提交會提示您配置github的郵箱和用戶名根據提示配置在彈出的輸入框中輸入用戶名,密碼登錄顯示出INFO Deploy done: git表示成功發布到github上在瀏覽器上輸入 「用戶名.github.io」 即可訪問自己的博客(你可以把這個連結發布給小夥伴啦
  • iPhone怎麼添加信任 手把手教你iPhone添加信任
    iPhone怎麼添加信任 手把手教你iPhone添加信任時間:2018-03-22 10:11   來源:綠茶軟體園   責任編輯:沫朵 川北在線核心提示:原標題:iPhone怎麼添加信任 手把手教你iPhone添加信任 iPhone怎麼添加信任?
  • 《荒野亂鬥》小羅玩法攻略 手把手教教你小羅怎麼玩
    《荒野亂鬥》小羅玩法攻略 手把手教教你小羅怎麼玩時間:2020-12-08 15:42   來源:遊俠網   責任編輯:沫朵 川北在線核心提示:原標題:《荒野亂鬥》小羅玩法攻略 手把手教教你小羅怎麼玩 荒野亂鬥小羅怎麼玩?小羅是荒野亂鬥新增的炫彩英雄,在足球模式中小羅的表現尤其亮眼。英雄定位是一個輔助。
  • 我的世界石拱橋圖文教程 手把手教你石拱橋怎麼做
    我的世界石拱橋圖文教程 手把手教你石拱橋怎麼做時間:2020-01-02 16:18   來源:小皮手遊網   責任編輯:沫朵 川北在線核心提示:原標題:我的世界石拱橋圖文教程 手把手教你石拱橋怎麼做 教程學習難度不高,新手易懂。本期諸葛教科書給大家帶來我的世界石拱橋教程吧,希望大家喜歡。
  • 【手把手教你辦彙算】手機個人所得稅APP標準申報
    為了幫助納稅人順利完成個稅年度彙算,國家稅務總局推出「手把手教你辦理個稅年度彙算