我想从Goproxy中删除我的私有包

我想从Goproxy中删除我的私有包,go,go-modules,Go,Go Modules,这是一个围棋模块的问题。 我的电脑运行go 1.13,go模块模式开启 这是mygo env: GO111MODULE="on" GOPRIVATE="" GOPROXY="https://goproxy.io,direct" 起初,我编写了一个用于测试的公共包,并将其上传到github。然后我“去拿”这个独立的包裹。之后,我将它设置为私有,甚至从github中删除了它(我尝试了“git克隆”,但无法再次下载)。但我可以在从github中删除它之后“去获取”。很快我意识到这个包可能缓存在gop

这是一个围棋模块的问题。 我的电脑运行go 1.13,go模块模式开启

这是my
go env

GO111MODULE="on"
GOPRIVATE=""
GOPROXY="https://goproxy.io,direct"
起初,我编写了一个用于测试的公共包,并将其上传到github。然后我“去拿”这个独立的包裹。之后,我将它设置为私有,甚至从github中删除了它(我尝试了“git克隆”,但无法再次下载)。但我可以在从github中删除它之后“去获取”。很快我意识到这个包可能缓存在goproxy.io或其他代理数据库中。因此,我再次设置GOPROXY=“direct”和“goget”这个包,但失败了。这一行动证明了我的猜测

现在是我的问题:

  • 如何从goproxy.io或其他数据库中删除整个包
  • 是否有一种安全的方法来使用go模块,我不想错误地将我的私人代码上传到其他数据库

  • 我试图逃跑,但什么也没找到。感谢所有阅读和回答此问题的人。

    如果您无意中发布了一个您打算保密的软件包/模块,请点击第页:

    删除包 如果您想删除软件包,请发送电子邮件至
    go discovery-feedback@google.com
    ,以及要删除的导入路径或模块路径

    但是正如Adrian在评论中提到的,不能保证没有人下载你发布的软件包

    如果希望某些包/模块保持私有,可以在go工具所遵循的
    GOPRIVATE
    GONOPROXY
    GONOSUMDB
    环境变量中枚举它们(使用全局模式)

    从命令
    转到帮助模块private

    GOPRIVATE环境变量控制go命令的模块 认为是私有的(不公开),因此不应使用 代理或校验和数据库。变量是以逗号分隔的 模块路径前缀的全局模式(语法为Go的path.Match)


    也可以使用
    go env-w
    命令设置这些变量。如果您无意中发布了一个您想要成为私有的包/模块,您可以使用
    go help env

    获得更多关于它的帮助,然后页面:

    删除包 如果您想删除软件包,请发送电子邮件至
    go discovery-feedback@google.com
    ,以及要删除的导入路径或模块路径

    但是正如Adrian在评论中提到的,不能保证没有人下载你发布的软件包

    如果希望某些包/模块保持私有,可以在go工具所遵循的
    GOPRIVATE
    GONOPROXY
    GONOSUMDB
    环境变量中枚举它们(使用全局模式)

    从命令
    转到帮助模块private

    GOPRIVATE环境变量控制go命令的模块 认为是私有的(不公开),因此不应使用 代理或校验和数据库。变量是以逗号分隔的 模块路径前缀的全局模式(语法为Go的path.Match)


    也可以使用
    go env-w
    命令设置这些变量。对于问题2,我今天已经试过好几次了,您可以使用“go help env”获得更多帮助。 如果您想安全地构建私有包,最重要的事情是在构建包之前设置
    GOPRIVATE
    。和
    GONOPROXY
    GONOSUMDB
    将自动设置为与
    GOPRIVATE
    相同。 现在,您可以编写代码并将git推送至专用远程回购,然后尝试获取它,您将失败并看到类似的错误消息:

    致命:无法读取“”的用户名:终端提示已禁用 确认导入路径输入正确。 如果这是一个专用存储库,请参阅以获取更多信息

    该链接告诉我们,如果您将密钥上载到远程ropo,我们应该使用带有用户名/密码的
    https
    链接,或者用ssh链接替换您的https链接。完成此操作后,您将成功地
    从源地址(您的包名)获取
    而不是代理


    此外,让我们使用
    go clean-modcache
    删除所有go模块缓存,并设置
    GOPRIVATE=“”
    。我将测试我们的私有包是否已上载到代理

    案例1: 设置
    GOPROXY=”https://goproxy.io“
    或其他代理,然后打开
    获取私有包。
    您将面临一个
    404notfound
    ,它显示您没有从代理中找到任何内容(这意味着代理中没有缓存/存储任何内容)

    案例2: 设置
    GOPROXY=“direct”
    (使用您的包裹名称的直接地址),然后
    获取私人包裹。
    您将像这样面对错误消息:

    验证{PACKAGENAME}:{PACKAGENAME}:初始化sumweb.Conn:检查树#{ID}:Get:拨号tcp{IP}:{PORT}:i/o超时

    go-get
    函数将尝试使用您的软件包检查golang.org数据库中的校验和(我无法直接链接到google服务器,因此显示超时错误/如果您可以链接到google服务器,我猜您将获得404)。它表明,如果我们试图
    在未设置
    GOPRIVATE
    的情况下获取一个私有包,那么您将失败,因为您无法通过检查


    建议: 如果你想构建你的私人围棋包,你应该首先设置你的
    GOPRIVATE
    ,并确保它足够宽,可以包含你的包名



    感谢大家阅读并回答这个问题。

    关于问题2,我今天已经试了好几次了。 如果您想安全地构建私有包,最重要的事情是在构建包之前设置
    GOPRIVATE
    。和
    GONOPROXY
    GONOSUMDB
    将自动
    GOPRIVATE, GONOPROXY, GONOSUMDB
      Comma-separated list of glob patterns (in the syntax of Go's path.Match)
      of module path prefixes that should always be fetched directly
      or that should not be compared against the checksum database.
      See 'go help module-private'.