zoukankan      html  css  js  c++  java
  • 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 不会去对下载的依赖包做安全校验,存在一定的安全隐患
    

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

  • 相关阅读:
    appium+python自动化项目实战(一):引入nose和allure框架
    jmeter+WebDriver:启动浏览器进行web自动化
    jmeter强大的扩展插件!!
    jmeter+Fiddler:通过Fiddler抓包生成jmeter脚本
    appium+python自动化测试真机测试时报错“info: [debug] Error: Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"]”
    Appium+python移动端自动化测试-python库及pycharm安装(二)
    Appium+python移动端自动化测试-环境搭建(一)
    安全测试之bWAPP环境搭建
    Battery Historian之App耗电量测试
    (15)Docker之用Nginx实现SpringBoot应用的负载均衡简单记录
  • 原文地址:https://www.cnblogs.com/GHzcx/p/13354447.html
Copyright © 2011-2022 走看看