摘要:但是在與此同時(shí)出現(xiàn)了然后隨著的出現(xiàn),又更名為,真的是百家爭鳴那。采用文件來追蹤依賴,而不是的和文件。然而他們并不想提交大量的文件,因?yàn)殒湸a程序僅僅是個小的代碼庫。想必在年會逐漸替換以及中的,希望可以終結(jié)混亂的包管理機(jī)制。
作者: TopJohnFabric與dep 個人感受
原文連接:https://www.xuanzhangjiong.to...
接觸Golang有2年時(shí)間了,從最初學(xué)習(xí)的時(shí)候簡單地采用GOPATH開始,作為一個寫過幾年代碼的人就有點(diǎn)奇怪,從Java的Maven到Node.js的npm,Golang的這種代碼管理方式有點(diǎn)思維的跳躍。但是也勉強(qiáng)接受了,個人開發(fā)來說沒什么大問題,所有的第三方包都由自己維護(hù),但是采用Git協(xié)作的話就有點(diǎn)不知所云了,每個人都要維護(hù)統(tǒng)一的第三方包。后來就采用Govendor來統(tǒng)一管理維護(hù)項(xiàng)目的第三方包。上述是個人使用經(jīng)驗(yàn),可能是我入Golang這行較晚,很多依賴管理工具沒趕上潮流吧,自帶學(xué)Go之后,Govendor便是主流工具。
Fabric包管理工具的變更Govendor也是之前很長一段時(shí)間Hyperledger Fabric所采用的依賴管理工具,但是在17年11月22日在Jira上便開始討論是否采用dep來進(jìn)行包依賴管理,畢竟在混亂的年代,第三方的包管理工具不是一個長久之計(jì),dep當(dāng)時(shí)已經(jīng)成為Go的官方包管理工具的一個候選者,在1.2版本中,F(xiàn)abric開始采用dep作為依賴管理工具。
但是在與此同時(shí)出現(xiàn)了vgo,然后隨著go v1.11的出現(xiàn),vgo又更名為go modules,真的是百家爭鳴那。現(xiàn)在Fabric主項(xiàng)目采用的是dep,而fabric ca項(xiàng)目不知道是因?yàn)檫M(jìn)度緩慢還是考慮到go modules會發(fā)布,還在采用govendor進(jìn)行包管理。
在Jira上,18年6月6日的時(shí)候有一個討論,說的是vgo的提案已經(jīng)被go官方接受了,F(xiàn)abric團(tuán)隊(duì)需要考慮vgo在未來對Fabric的影響。當(dāng)然下述的文字表述僅僅是對歷史的一個回顧,現(xiàn)在vgo這個詞也已經(jīng)不存在了。
Vgo的Roadmap:
18年7月-計(jì)劃Go v1.11 release(包括‘vgo’的預(yù)覽版)
19年1月-計(jì)劃Go v1.12 release(完全包括‘vgo’)
Dep vs Vgodep和vgo主要的差異在于,dep是一個多帶帶的依賴管理工具,而vgo則是go命令的一個替代品。當(dāng)你運(yùn)行vgo build時(shí),就像運(yùn)行go build,但是vgo會自動幫你解決依賴。
vgo采用go.mod文件來追蹤依賴,而不是dep的Gopkg.lock和Gopkg.toml文件。
使用vgo同樣允許鏈碼相關(guān)的依賴在安裝的時(shí)候能夠自動下載并導(dǎo)入到二進(jìn)制中。這意味著我們可以忽略vendor目錄就像node_modules目錄一樣。
說說Chaincode中的包管理 場景如果一個用戶寫了一個帶有幾個外部依賴的鏈碼程序。他將采用dep去管理依賴和shim層。然而他們并不想提交大量的文件,因?yàn)殒湸a程序僅僅是個小的代碼庫。
當(dāng)前的實(shí)現(xiàn)在進(jìn)行install的時(shí)候,為了保證所有的依賴都被包括進(jìn)鏈碼的容器里,用戶被要求強(qiáng)制提交vendor目錄,否則編譯將會失敗。
建議的實(shí)現(xiàn)當(dāng)鏈碼構(gòu)建的時(shí)候,我們會搜索Gopkg.toml和Gopkg.lock文件。如果它們存在的話,我們會運(yùn)行dep ensure命令。這將會從相關(guān)的源頭獲取相關(guān)的依賴,然后不需要用戶提交依賴的前提下將依賴構(gòu)建進(jìn)二進(jìn)制中。
要值得注意的是,如果用戶希望提交vendor目錄(比如peer節(jié)點(diǎn)無法拉取相應(yīng)的依賴的情況下),這仍然有效-而且還有個好處是使用dep ensure-將保證提交的依賴是通過校驗(yàn)的。
總結(jié)個人觀點(diǎn),自從Golang v1.11發(fā)布之后go modules的出現(xiàn),F(xiàn)abric采用原生go modules替代dep是遲早的事,在Github中,已經(jīng)明確發(fā)現(xiàn)了dep現(xiàn)在的迭代只是因?yàn)間o modules還不太穩(wěn)定。想必在19年Fabric會逐漸替換dep以及Fabric CA中的govendor,希望go modules可以終結(jié)Golang混亂的包管理機(jī)制。
歡迎關(guān)注我的公眾號:AwesomeBlockchain,獲取更多技術(shù)文章!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/24525.html
本文描述了Web項(xiàng)目的兩種部署方案,石器時(shí)代的ssh & pull & restart方式不做太多說明 1.基于Fabric(Python)的部署方案 Fabric 是一個用于ssh的Python庫&命令行工具 Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for...
本文描述了Web項(xiàng)目的兩種部署方案,石器時(shí)代的ssh & pull & restart方式不做太多說明 1.基于Fabric(Python)的部署方案 Fabric 是一個用于ssh的Python庫&命令行工具 Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for...
摘要:企業(yè)區(qū)塊鏈平臺企業(yè)級許可的分布式分類賬平臺,為廣泛的行業(yè)用例提供模塊化和多功能性。這些節(jié)點(diǎn)通過應(yīng)用已經(jīng)由共識協(xié)議驗(yàn)證的交易來維護(hù)分類帳的副本,該交易被分組為包括將每個塊綁定到前一個塊的散列的塊中。 企業(yè)區(qū)塊鏈平臺 企業(yè)級許可的分布式分類賬平臺,為廣泛的行業(yè)用例提供模塊化和多功能性。 介紹 一般而言,區(qū)塊鏈?zhǔn)且粋€不可變的交易分類賬,維護(hù)在一個分布式對等節(jié)點(diǎn)網(wǎng)絡(luò)中。這些節(jié)點(diǎn)通過應(yīng)用已經(jīng)由共...
摘要:作為系列的新篇章,我選擇從超級賬本的開始。為什么選擇超級賬本作為起點(diǎn)我在之前的文章中曾說過會從超級賬本入手開始區(qū)塊鏈的學(xué)習(xí)和實(shí)踐,同時(shí)也給出了個人的理由。檢查事務(wù)提議的響應(yīng)。為了降低區(qū)塊鏈應(yīng)用的開發(fā)難度,超級賬本項(xiàng)目又引入了。 本著以教帶學(xué),Learning by Doing的想法,我于上周加入了Bob組織的HiBlock區(qū)塊鏈技術(shù)布道群。這個群可不太好混,群規(guī)要求每個成員必需每周有輸...
摘要:還提供創(chuàng)建通道的功能,允許一組參與者創(chuàng)建單獨(dú)的交易分類賬。共識交易必須按照發(fā)生的順序?qū)懭敕诸愘~,即使它們可能位于網(wǎng)絡(luò)中不同的參與者組之間。 介紹 Hyperledger Fabric是分布式分類賬解決方案的平臺,采用模塊化架構(gòu),提供高度機(jī)密性,彈性,靈活性和可擴(kuò)展性,它旨在支持不同組件的可插拔實(shí)現(xiàn),并適應(yīng)整個經(jīng)濟(jì)生態(tài)系統(tǒng)中存在的錯綜復(fù)雜的事物和復(fù)雜性。 我們建議首次使用的用戶首先閱讀下...
閱讀 778·2021-10-27 14:15
閱讀 1254·2021-10-15 09:42
閱讀 2795·2019-08-30 15:53
閱讀 1332·2019-08-23 17:02
閱讀 3016·2019-08-23 16:23
閱讀 3244·2019-08-23 15:57
閱讀 3533·2019-08-23 14:39
閱讀 570·2019-08-23 14:35