看看golang包是如何积极地成长和改进的,我想知道包版本的问题是如何解决的?
我认为一种方法是将第三方包存储在项目文件夹下。
但是如果我用go get安装它呢?
看看golang包是如何积极地成长和改进的,我想知道包版本的问题是如何解决的?
我认为一种方法是将第三方包存储在项目文件夹下。
但是如果我用go get安装它呢?
当前回答
go get将把包安装到GOPATH(一个可能包含冒号分隔的目录列表的环境变量)中列出的第一个目录中。你可以使用go get -u来更新现有的包。
你也可以使用go get -u all来更新GOPATH中的所有包
对于较大的项目,为每个项目创建不同的gopathath可能是合理的,这样在项目a中更新库就不会在项目B中引起问题。
输入go help gopath以查找有关gopath环境变量的更多信息。
其他回答
@tux的回答很好,只是想补充一点,你可以使用go get更新特定的包:
go get -u full_package_name
走1.13
(exec from模块根目录)
更新指定的依赖项:
go get -u <package-name>
更新所有对最新的小版本或补丁升级的直接和间接依赖(忽略预发布版):
go get -u ./...
# or
go get -u=patch ./...
参考:
https://github.com/golang/go/wiki/Modules#daily-workflow
去帮忙
由于这个问题提到了第三方库,而不是所有的包,那么您可能希望使用通配符。
一个用例是:我只想更新从Github VCS获得的所有包,然后你只会说:
go get -u github.com/... // ('...' being the wildcard).
这将继续下去,只更新你的github包在当前$GOPATH
同样也适用于VCS,假设你只想从ograniziton a的回购中升级所有的包,因为他们已经发布了一个你依赖的热修复:
go get -u github.com/orgA/...
由于这是谷歌搜索时的热门话题之一,我只是想在1.17中添加“在模块模式下使用'go get'安装可执行文件已被弃用”。
找到-d 用于当前模块的依赖项 去安装 用于当前模块的需求 去安装<with_version> 安装时忽略当前模块,即:'go install example.com/cmd@latest'
https://golang.org/doc/go-get-install-deprecation
进入path并键入
go get -u ./...
它将更新所有的require包。