• verifying module: xxx: initializing sumdb.Client: reading tree note: malformed note 解决方案


    Golang verifying module: xxx: initializing sumdb.Client: reading tree note: malformed note 解决方案


    问题描述

    在使用 go mod 拉取github上的一些包时碰到了一个非常令人头疼的问题,想使用一个包却拉不下来报了以下错误:

    go: finding module for package github.com/gin-gonic/gin
    go: downloading github.com/gin-gonic/gin v1.6.3
    hello.go:4:8: github.com/gin-gonic/gin@v1.6.3: verifying module: github.com/gin-gonic/gin@v1.6.3: initializing sumdb.Client: reading tree note: malformed note
    note:
    go.sum database tree
    1353790
    AVGYxnGGs0MvNF8Cz1JeGnh+z+DibzwwAxszDkhl+g4=
    
    — sum.golang.org Az3gri/j25iP5oWam/FLqOhVMy9zUpIZ004fCG8UxXhnuYAIFhacZYBl/4hhTihVsDxC64ynGws6jcIAxj4B6df/sgI=
    

    这是个啥错误呢?中文翻译过来就是 sumdb 校验异常
    然就这个坑,却困扰了我一下午......

    解决方案

    先给出解决方案吧

    go env -w GOSUMDB=off
    

    问题分析

    为啥会有上面那个异常呢,咱们打印一下环境变量来看一看究竟。

    $ go env
    set GO111MODULE=on
    set GOARCH=amd64
    set GOBIN=
    set GOCACHE=D:Gocache
    set GOENV=C:UserszhengguanghuiAppDataRoaminggoenv
    set GOEXE=.exe
    set GOFLAGS=
    set GOHOSTARCH=amd64
    set GOHOSTOS=windows
    set GOINSECURE=
    set GONOPROXY=
    set GONOSUMDB=
    set GOOS=windows
    set GOPATH=E:workspaceGo
    set GOPRIVATE=
    set GOPROXY=https://goproxy.io,direct
    set GOROOT=D:Go
    set GOSUMDB=sum.golang.org
    set GOTMPDIR=
    set GOTOOLDIR=D:Gopkg	oolwindows_amd64
    ...
    

    这个错误仿佛与 set GOSUMDB=sum.golang.org 这个脱不了干系,本着深挖到底的决心,古狗一下这个参数是用来干啥使的,哦 某位知友已经给出了答案:

    GOSUMDB(go checksum database)是Go官方为了go modules安全考虑,设定的module校验数据库,服务器地址为:sum.golang.org
    
    你在本地对依赖进行变动(更新/添加)操作时,Go 会自动去这个服务器进行数据校验,保证你下的这个代码库和世界上其他人下的代码库是一样的。
    
    和go.mod一样,Go 会帮我们维护一个名为go.sum的文件,它包含了对依赖包进行计算得到的校验值
    
    环境变量GOSUMDB可以用来配置你使用哪个校验服务器和公钥来做依赖包的校验
    
    Go1.13 中当设置了 GOPROXY="https://proxy.golang.org" 时 GOSUMDB 默认指向 "sum.golang.org",其他情况默认都是关闭的状态。如果设置了 GOSUMDB 为 “off” 或者使用 go get 的时候启用了-insecure参数,Go 不会去对下载的依赖包做安全校验,存在一定的安全隐患
    

    所以在本地使用的时候可以把这个环境变量关掉,保证包能正常拉下来。

  • 相关阅读:
    制作你的第一个HTML 5游戏
    拒绝臆想,让我们脚踏实地做设计!
    HTML 5或者Silverlight?
    如何替换掉回车键
    杀死团队的武器与修复团队的方法
    Google趋势中显示jQuery是最流行的JavaScript框架
    关于脚本载入器的思考
    简化Web开发的12个HTML5CSS框架
    线框图(demo草图)制作的总结
    江苏南通周边经纬度
  • 原文地址:https://www.cnblogs.com/GHzcx/p/13354447.html
Copyright © 2020-2023  润新知