完全删除使用“go get”安装的软件包?

Rod*_*igo 9 package uninstallation go go-modules

我正在使用 Go 1.13.1,截至今天最新。

我正在尝试go get从 GitHub 中完全删除我安装的软件包。本go clean -i <PACKAGE_NAME>似乎没有工作,因为有文件通过传播,至少,这些目录:

~/go/pkg/mod/github.com/<PACKAGE_NAME>
~/go/pkg/mod/cache/download/github.com/<PACKAGE_NAME>
~/go/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/<PACKAGE_NAME>
Run Code Online (Sandbox Code Playgroud)

有没有办法在不手动删除所有内容的情况下清理所有内容?

icz*_*cza 16

目前不支持此功能。如果您考虑一下:可能是当前模块不再需要它,但是您的系统上可能还有其他(不相关的)模块可能仍然需要它。模块缓存在系统上的所有模块之间“共享”;它可以共享,因为依赖项是版本化的,如果 2 个不相关的模块引用一个模块/包的相同版本,它是相同的并且可以共享。

最接近的是go cleanwith -modcache,但这会删除整个模块缓存:

-modcache 标志导致 clean 删除整个模块下载缓存,包括版本化依赖项的解压缩源代码。

  • 我自己来自 npm 世界,发现 go 管理包的方式令人沮丧。在每个应用程序的基础上管理包对我来说更有意义,这似乎是世界的发展方向:像“pyenv”和“nvm”这样的工具不仅可以轻松管理包,还可以轻松管理整个堆栈基于每个应用程序。 (7认同)
  • 知道为什么采用这种方法而不是 NPM 的方法吗?不管怎样,如果有一个工具来分析缓存和清理孤立包就好了。 (3认同)
  • 只是想说,我个人*不*使用 Rust,仅用于一些小型宠物项目,但是 Rust 中的“cargo”工具和管理依赖项的体验非常好。设置、安装、清洁方面没有任何问题。但是编译时间/安装确实会变得非常长,所以选择你的毒药...... (3认同)
  • @LaneRettig 就我个人而言,与每个应用程序相比,我更喜欢全局管理多个版本,我不希望每个项目中都有约 GB 的“go_modules”。尽管我同意应该提供一种开箱即用的方法来删除全局安装的这些依赖项。 (2认同)