Go语言如何更新第三方软件包?

irtuqstp  于 2023-01-28  发布在  Go
关注(0)|答案(9)|浏览(445)

看看golang软件包是如何积极地成长和改进的,我想知道软件包版本的问题是如何解决的?
我发现一种方法是将第三方包存储在项目文件夹下。
但是如果我用go get安装它呢?

nafvub8i

nafvub8i1#

go get将在GOPATH(可能包含以冒号分隔的目录列表的环境变量)列出的第一个目录中安装程序包。您可以使用go get -u更新现有程序包。
您还可以使用go get -u all更新GOPATH中的所有软件包
对于较大的项目,为每个项目创建不同的GOPATH可能是合理的,这样更新项目A中的库就不会在项目B中引起问题。
键入go help gopath以了解有关GOPATH环境变量的更多信息。

w8f9ii69

w8f9ii692#

@tux回答很棒,只是想补充一下,你可以用go get来更新一个特定的包:

go get -u full_package_name
dohp0rv5

dohp0rv53#

因为这个问题提到了***第三方***库,而不是***所有***包,那么您可能需要回退到使用通配符。
使用情形为:我只想更新从Github VCS获得的所有软件包,那么你只需要说:

go get -u github.com/... // ('...' being the wildcard).

这将继续,并且只更新当前$GOPATH中的github包
同样的情况也适用于VCS中,假设您只想升级A组织的repo中的所有软件包,因为他们发布了您依赖的热修复程序:

go get -u github.com/orgA/...
wwwo4jvm

wwwo4jvm4#

以上回答存在以下问题:
1.它们会更新所有内容,包括您的应用(以防您有未提交的更改)。
1.它们更新了您可能已从项目中删除但已在磁盘上的包。
要避免这些问题,请执行以下操作:
1.删除要更新的第三方文件夹。
1.转到你的应用程序文件夹并运行go get -d

niknxzdl

niknxzdl5#

要指定版本或提交:

go get -u otherpackage@1.2.3

go get -u otherpackage@git-sha

请参见www.example.comhttps://github.com/golang/go/wiki/Modules#daily-workflow

kxeu7u2r

kxeu7u2r6#

转到1.13
(exec从模块根目录)
更新指定的依赖项:

go get -u <package-name>

将所有直接和间接依赖项更新为最新的次要升级或修补程序升级(忽略预发行版):

go get -u ./...
# or
go get -u=patch ./...

参考:
https://github.com/golang/go/wiki/Modules#daily-workflow
go help get

xghobddn

xghobddn7#

由于这是Google搜索的热门内容之一,我只想补充一点,对于1. 17,“在模块模式下使用'go get'安装可执行文件是不赞成的”。

  • go get -d
  • 对于当前模块的依赖项
  • go install
  • 对于当前模块的要求
  • go install <with_version>
  • 安装时忽略当前模块,即:'转到安装example.com/cmd@latest'

https://golang.org/doc/go-get-install-deprecation

57hvy0tb

57hvy0tb8#

转到路径并键入

go get -u ./...

它将更新所有必需包。

vlju58qv

vlju58qv9#

如果要从特定分支升级版本,可以用途:

go get -u <path-to-repo>@<branch>

相关问题