golang 编译报错:matched no packages

我发现问题了,是 golang 1.16 新引入一些功能导致 golang-packaging 出兼容性问题了。深度的 golang 包也出现这个报错了。

@hillwood 可这解释不了为什么同样的命令现在不编译 binary 了…

现在发现的问题是,同样的命令用 golang 1.15 及其以前的版本能编译出 binary ,但从 1.16 开始会报 “ matched no packages“且编译不出 binary ;
从 1.16 开始 go build 会强行检查 go.mod 和 go sum ,像 Deepin 开发的 golang 项目本来就没提供 go.mod 和 go sum 那就意味着不支持;
Deepin 的 golang 包有些提供的项目域是他们内部的私有域,那就意味着只能在他们公司的局域网里面才能编译,外面是没办法的;
利用 rpm 内置依赖 golang 依赖源码包似乎从 golang 1.16 开始失效了,这可能是导致不能编译出 binary 的根本原因。

现象是对的。但是最后一句话不对…因为我最早尝试的时候就没像你那样依赖 rpm,也编译不出 binary,也就是说 golang-packaging 的这个做法就行不通了,但是具体为什么编译不出 binary,我也在查找原因,所以暂时还告诉不了你为什么…

但至少能确定,golang-packaging 没有如预期工作,第二加上 1.16 这个 modules 的变化,它需要设计上的扩展,所以很可能就像我说的意味着重写…

从 Go 1.16 开始,GO111MODULE 环境变量默认为 on, 我有一个项目也是暂时手动切换为旧的 GOPATH 模式才通过编译的:

export GO111MODULE=off
go build demo.go

Go 官方计划在 Go 1.17 中放弃对 GOPATH 模式的支持。

现象也不对,我测试了一下,不带补丁是出 binary 的…就是补丁的问题

你再试试深度的包,如果用 go 1.16 编译就会出现 matched no packages 的错误。

@hillwood 具体哪个啊?

https://build.opensuse.org/package/show/X11:Deepin:Factory/deepin-x11-client