我已经阅读了大量的文章和关于导入第三方软件包的问题,这些软件看起来很简单,但我不明白的是,我没有看到任何对版本控制的引用。在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