目錄
- 準備
- 擷取依賴&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