天天看點

IPFS開發準備擷取依賴&build注意

目錄

  • 準備
  • 擷取依賴&build
  • 注意

準備

gawk不是預安裝的,要確定安裝;

運作gawk的時候可能還需要yacc;

擷取依賴&build

go get github.com/ipfs/go-ipfs

# 這裡是ipfs main函數的位置
# 從這裡go build就可以build整個工程
cd $GOROOT/src/github.com/ipfs/go-ipfs/cmd/ipfs

go build 2> out.txt                #<--------\ 回 重 直
                                            #| 到 新 到
gawk -f scrpit.gawk out.txt > get.sh        #| 這 運 成
                                            #| 裡 行 功
sh get.sh                          #--------/
           

這裡是上面用到的gawk程式;

因為go build的過程中會缺少很多依賴,是以一次go build肯定無法通過,會提示缺少的包;是以這裡我寫了一個gawk程式,用于收集缺少的依賴,生成一個腳本用于擷取依賴;由于依賴還有依賴,運作一次腳本之後仍然無法build成功,是以反複執行這個過程直到所有的依賴都被下載下傳就可以build成功了;

把下面這段程式拷貝到$GOROOT/src/github.com/ipfs/go-ipfs/cmd/ipfs目錄下,命名為script.gawk

# scrpit.gawk
BEGIN{
print "# Generated by script.gawk; used for collecting dependencies."
print "# go build 2> temp.txt"
print "# gawk -f script.gawk out.txt > get.sh"
print "# sh get.sh"
print "#"
print "# Created by AprilCal on 2019/5/7."
print ""
}

/"/{
print "echo go get",$5
print "go get",$5
}
           

在擷取依賴的過程中會有警告

go get: warning: modules disabled by GO111MODULE=auto in GOPATH/src;
		ignoring ../../go.mod;
           

不必理會;如果打開go自帶的依賴管理,其他工程目錄的特定版本就會被下載下傳到pkg路徑下,不便開發;

注意

  • ipfs尤其是libp2p庫,還在開發中,master分支上沒有穩定版本,有時候master分支上的代碼可能不能build成功;需要自己手動調整有問題的git倉庫,回退版本;
  • 如果build成功了但是運作失敗,很可能是因為沒有使用項目裡的makefile安裝過的原因;
  • 佛了 XP

繼續閱讀