我已經閱讀了大量的文章和關於導入第三方軟件包的問題,這些軟件看起來很簡單,但我不明白的是,我沒有看到任何對版本控制的引用。在Dartlang中有一個pubspec文件,它定義了你的軟件包,包括它的版本和它的依賴關係,包括他們需要的版本。如果我做了go get github.com/gorilla/sessions
並寫了我的應用程序,然後6個月後,我必須清除我的目錄並重新獲得所有內容,在這段時間內該軟件包已更新並與我的代碼使用舊版本時向後兼容?如何在golang中更新軟件包?
7
A
回答
9
正式版,從GO FAQ:
如果您使用的是外部提供的包,並擔心它可能會以意想不到的方式發生變化,最簡單的辦法是將它複製到你的本地倉庫。 (這是Google內部採取的方法。)將該副本存儲在新的導入路徑下,將其標識爲本地副本。
有許多替代這種方法,主要是基於聲明您使用的這些項目的確切版本。
例如,見 「Dead Simple Dependencies in Go -- Keep it simple and keep your sanity.」(基於emil2k/vend
)
對圍棋依賴管理的主要不同選項在上市:
「Go Package Management -- A summary of dependency management in Go」
(及其聯繫人GOPM mailing list)
2015年7月更新:
- Go團隊的官方銷售方式是discussed here。
- 在getgb.io由Dave Cheney提出了一種替代的構建工具,稱爲「gb」。
更新2017年第四季度:如前所述below,go dep
是釘住依賴版本的官方工具(即使該釘扎的方法也不是沒有批評:詳見「The cargo cult of versioning」)。
當Go 1.10開發開始時,它應該被合併到工具鏈中,according to its roadmap。
1
我使用dep
作爲golang
項目的依賴項管理工具。請使用以下鏈接dep tool獲取更多信息。
dep
是Go的原型依賴管理工具。它需要Go 1.8或更新來編譯。
dep
是官方的實驗,但還沒有官方的工具。
現狀: 2017年11月
dep
是生產安全使用。
相關問題
- 1. 軟件包如何在golang中工作
- 2. 更換Golang標準軟件包並在
- 3. 軟件包更新僅在軟件包管理器中顯示
- 4. 差異軟件包,軟件包安裝,軟件包更新
- 5. 如何生成軟件更新包?
- 6. 如何提交軟件包更新?
- 7. 如何在軟件包管理器控制檯中將「更新軟件包」更新爲舊版本?
- 8. 更新客戶端軟件包時未更新的軟件包中出現UnsatisfiedLinkError
- 9. 更新Cent OS軟件包?
- 10. Force Composer更新軟件包
- 11. 更新Rails軟件包
- 12. 軟件包更新凍結
- 13. 如何在mac osx中正確安裝/更新haskell軟件包
- 14. 在Windows上更新Haskell軟件包
- 15. OSGi:在更新其他軟件包時刷新一個軟件包
- 16. 如何使用golang的「compress/gzip」軟件包來gzip文件?
- 17. Golang - 錯誤'無法找到軟件包'
- 18. Golang 1.6在供應商文件夾中找不到軟件包
- 19. 軟件包更新FileOverflow - 文件太大
- 20. 如何更新Apache Felix OSGi框架中的軟件包
- 21. 如何在ubuntu上更新lua軟件包?
- 22. 如何在安裝後更新軟件包 - standalone?
- 23. Android Studio無法在Mac中安裝更新/新軟件包
- 24. Golang如何導入沒有gopath的本地軟件包?
- 25. 如何在獲取golang軟件包時修復錯誤消息「不允許使用內部軟件包」?
- 26. 如果新版本可用,更新本地軟件包文件
- 27. golang:將軟件包安裝在本地目錄中
- 28. 軟件更新
- 29. Symfony2新軟件包
- 30. 無法更新xamarin.support.v4軟件包
+1包括良好的鏈接。我喜歡使用gopkg.in(在上一個鏈接中提到),因爲它似乎是一種理智的方式來聲明「我想要什麼版本?」,因爲「我想要什麼提交哈希?」對於使用你寫的東西的新開發者來說有點神祕。 – pswaminathan 2015-02-25 05:40:26