升级Go后是否需要重新编译所有包?

8

我升级Go之后,如何确保我的$GOPATH/pkg中的所有软件包和$GOPATH/bin中的二进制文件都使用新版本进行重新编译?

我希望任何升级错误都被报告为警告,而不是导致操作中止的错误。


1
这里没有Go工具套件的帮助,需要手动完成。 - Volker
@volker,看起来我应该清空binpkg的内容并调用go install all?目前我没有任何可尝试的东西。我正在安装一个新的主机。 - chmike
2
@scott 这感觉不安全。我只想重新编译所有东西。原因是如果我不这样做,我可能会看到那些使用最新版本进行干净编译的人看不到的行为。 - chmike
1
all 目标也会重建 GOROOT 中的一些工具。如果您不想这样做,那么只需重建您感兴趣的内容即可。如果您想确保重新构建包的所有 _依赖项_,则使用安装 -a 标志。 - JimB
你试过 go build -a 吗?我记得在以前的 Go 版本中,这个命令可以解决你的问题。 - Pizza lord
显示剩余2条评论
1个回答

3
假设您只有一个GOPATH路径,您可以通过运行以下命令来更新所有包:
cd $GOPATH/src go get -u -v ./...
如果您有多个GOPATH,则需要进入每个GOPATH的src文件夹并运行以下命令:
go get -u -v ./...
然后运行"go install all"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接