当 `go list` 没有显示包的最新版本时该怎么办?
What to do when `go list` doesn't show the newest version of a package?
go list -m -versions gopkg.in/urfave/cli.v1
给出了以下版本列表,最新版本为 1.20.0:
gopkg.in/urfave/cli.v1 v1.0.0 v1.1.0 v1.2.0 v1.3.0 v1.3.1 v1.4.0 v1.4.1 v1.5.0 v1.6.0 v1.7.0 v1.7.1 v1.8.0 v1.9.0 v1.10.0 v1.10.1 v1.10.2 v1.11.0 v1.11.1 v1.12.0 v1.13.0 v1.14.0 v1.15.0 v1.16.0 v1.16.1 v1.17.0 v1.17.1 v1.18.0 v1.18.1 v1.19.0 v1.19.1 v1.20.0
不过,根据gopkg.in, 1.22.4 should be the newest version. 1.22.4 is also the newest release on the package's GitHub repo.
我该如何解决这个问题?好像是缓存问题。
有关背景信息:存储库最初具有基于 dep 的依赖项列表 (Gopkg.toml),其版本为 1.20。我更喜欢模块,所以我用 go mod init $REPO_URL
初始化了 go.mod。后来我从 repo 中提取了最新的提交,其中包版本已更新为 1.22。我尝试重新创建 go.mod
;它首先表明该步骤存在问题:
go: converting Gopkg.lock: stat gopkg.in/urfave/cli.v1@v1.22.0: gopkg.in/urfave/cli.v1@v1.22.0: invalid version: go.mod has non-....v1 module path "github.com/urfave/cli" at revision v1.22.0
最后,我得到了需要 1.22 版的代码,但工具获取的是 1.20 版,它不向前兼容,因此无法编译。
您无法修复它。包坏了,所以包 author/maintainer 需要修复它。
简而言之,该项目有一个无效的 go.mod
文件,该文件显然是在 v1.20.0 发布后添加的——这就是为什么可以使用该版本的原因。
go.mod
文件引用“github.com/urfave/cli”,但包导入为“gopkg.in/urfave/cli.v1”。 go.mod
文件需要更新以反映正确的导入路径。
作为变通方法,它 可能 将包导入为“github.com/urfave/cli”,但这会破坏许多包具有引用备用导入路径的“子”包。不过,我认为在这种情况下值得一试。
go list -m -versions gopkg.in/urfave/cli.v1
给出了以下版本列表,最新版本为 1.20.0:
gopkg.in/urfave/cli.v1 v1.0.0 v1.1.0 v1.2.0 v1.3.0 v1.3.1 v1.4.0 v1.4.1 v1.5.0 v1.6.0 v1.7.0 v1.7.1 v1.8.0 v1.9.0 v1.10.0 v1.10.1 v1.10.2 v1.11.0 v1.11.1 v1.12.0 v1.13.0 v1.14.0 v1.15.0 v1.16.0 v1.16.1 v1.17.0 v1.17.1 v1.18.0 v1.18.1 v1.19.0 v1.19.1 v1.20.0
不过,根据gopkg.in, 1.22.4 should be the newest version. 1.22.4 is also the newest release on the package's GitHub repo.
我该如何解决这个问题?好像是缓存问题。
有关背景信息:存储库最初具有基于 dep 的依赖项列表 (Gopkg.toml),其版本为 1.20。我更喜欢模块,所以我用 go mod init $REPO_URL
初始化了 go.mod。后来我从 repo 中提取了最新的提交,其中包版本已更新为 1.22。我尝试重新创建 go.mod
;它首先表明该步骤存在问题:
go: converting Gopkg.lock: stat gopkg.in/urfave/cli.v1@v1.22.0: gopkg.in/urfave/cli.v1@v1.22.0: invalid version: go.mod has non-....v1 module path "github.com/urfave/cli" at revision v1.22.0
最后,我得到了需要 1.22 版的代码,但工具获取的是 1.20 版,它不向前兼容,因此无法编译。
您无法修复它。包坏了,所以包 author/maintainer 需要修复它。
简而言之,该项目有一个无效的 go.mod
文件,该文件显然是在 v1.20.0 发布后添加的——这就是为什么可以使用该版本的原因。
go.mod
文件引用“github.com/urfave/cli”,但包导入为“gopkg.in/urfave/cli.v1”。 go.mod
文件需要更新以反映正确的导入路径。
作为变通方法,它 可能 将包导入为“github.com/urfave/cli”,但这会破坏许多包具有引用备用导入路径的“子”包。不过,我认为在这种情况下值得一试。