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