g
g copied to clipboard
Windows 11 LTSC 安装 go 卡 Checksums matched
Describe the bug/缺陷描述 安装 g install 1.23.2 卡 Checksums matched
To Reproduce/缺陷复现步骤
如下图所示:
CMD:
Powershell 7.5.2:
- g -v
g version 1.8.0
Built: 2025-07-11 13:24:15
Git branch: master
Git commit: a82e89cc
Go version: go1.20.14
OS/Arch: windows/amd64
Experimental: true
- go env
G_HOME="C:\\Users\\j******en\\.g"
G_MIRROR=""
G_EXPERIMENTAL="true"
切换版本 1.24.5 也不行,重启过电脑,反复安装过 Windows Powershell,移除相关预加载插件,都无济于事,还有什么办法可以看看这个问题?
- 我没有相关的环境进行复现,只能做一些猜测:程序输出了
Checksums matched,说明已经完成了 checksum 的验证,最可能是在新建符号链接切换版本的步骤上阻塞了。Windows 下的实现有别于其他 *nix ,会优先通过调用本地命令行完成符号链接的创建,可能就在这个地方阻塞了。以下是部分实现代码:
func mkSymlink(oldname, newname string) (err error) {
if runtime.GOOS == "windows" {
// Windows 10下无特权用户无法创建符号链接,优先调用mklink /j创建'目录联接'
if err = exec.Command("cmd", "/c", "mklink", "/j", newname, oldname).Run(); err == nil {
return nil
}
}
if err = os.Symlink(oldname, newname); err != nil {
return errors.WithStack(err)
}
return nil
}
- 可以在 install 子命令后加上
--nouse选项,即安装目标版本后不切换,如g install --nouse 1.25rc2。如果加上此选项后阻塞现象消失,可以部分印证是上述原因引起。
如果要精确定位原因,就需要下载源代码逐行调试,看下阻塞在哪一行。
- Windows 11(Arm64)平台下,解压缩步骤耗费了很长时间,但可以正常完成安装;
- 解压缩步骤待优化;