Go如何更新第三方软件包?
看看golang包是如何增长和提高的我想知道包版本的问题是如何解决的?
我看到一种方法是将第三方软件包存储在项目文件夹下。
但是如果我安装它go get
?
go get
会将程序包安装在GOPATH
(一个可能包含冒号分隔的目录列表的环境variables)列出的第一个目录中。 您可以使用go get -u
来更新现有的软件包。
您也可以使用go get -u all
来更新GOPATH
所有包
对于较大的项目,为每个项目创build不同的GOPATH可能是合理的,因此更新项目A中的库不会导致项目B中的问题。
键入go help gopath
以查找有关GOPATH
环境variables的更多信息。
@tux答案很好,只是想补充一点,你可以用go去更新一个特定的包:
go get -u full_package_name
由于问题提到的第三方库,而不是所有的包,那么你可能想要回到使用通配符。
一个用例是:我只想更新从Github VCS获得的所有包,然后你只会说:
go get -u github.com/... // ('...' being the wildcard).
这将继续,只在当前$GOPATH
更新你的github包
同样适用于VCS内部,也就是说,您只想从ogranizaiton A的仓库中升级所有软件包,因为他们已经发布了您所依赖的修补程序:
go get -u github.com/orgA/...
以上回答有以下问题:
- 他们更新包括你的应用程序的一切(如果你有未提交的更改)。
- 他们更新了您可能已经从您的项目中删除的软件包,但已经在您的磁盘上。
要避免这些,请执行以下操作:
- 删除要更新的第三方文件夹。
- 去你的应用程序文件夹并运行
go get -d