如何删除使用“ go get”命令下载的Go软件包?

时间:2018-10-29 15:37:48

标签: go

我想知道是否存在使用golang删除或删除go软件包的方法。为了简单起见,与 go get 命令相反。

e.g. 
$ go get <PACKAGE_NAME> 
$ go delete <PACKAGE_NAME>    (Looking for similar functionality)

请注意,我知道我们可以使用 rm 命令从 src 和pkg目录中手动删除下载的文件。 但是问题在于系统命令 rm 并不知道您要执行的特定操作(例如,在$ GOPATH / pkg中查看..),这对于用户使用时是一个额外的步骤rm 。我正在寻找所有软件包管理器都提供的..如一条评论中所述..(npm卸载,pip卸载等。)。

4 个答案:

答案 0 :(得分:4)

您可以将其从磁盘上删除:

rm -r $GOPATH/src/<PACKAGE_NAME>

这将完全删除软件包。 ,没有用于删除软件包的工具或go命令。但这应该足够简单。

答案 1 :(得分:4)

对于那些使用Go模块的用户,rmgo.mod文件仍然很脏,这是不够的。您可以使用有效的go.sum命令,但并不直观。

来自https://blog.golang.org/migrating-to-go-modules

只有在检查了以下所有软件包后才能删除依赖项 一个模块,以及这些软件包的所有可能的构建标签组合。 普通的构建命令不会加载此信息,因此 无法安全删除依赖项。

go mod tidy命令清除了这些未使用的依赖项

我第一次使用它删除了未使用的依赖项,但也安装了新的依赖项。后来我发现它运行测试来检查是否可以按照https://github.com/golang/go/wiki/Modules#why-does-go-mod-tidy-record-indirect-and-test-dependencies-in-my-gomod中所述删除依赖项。

答案 2 :(得分:2)

  

但是有一种简单的方法可以删除下载的软件包(删除PACKAGE_NAME吗?)?

不,没有。

手动rm是行之有效的方式。

答案 3 :(得分:0)

我找到了一个简单的解决方案。我正在使用鱼壳,所以我只是在〜/ .config / fish / config.fish中添加了此简单功能。

它完美地清理了$ GOPATH下的空文件夹。如果您想保留空文件夹,则可能要删除此部分,但对我来说,这很烦人。

请注意,必须在函数声明之前声明您的GOPATH,否则将不起作用。

请确保您正在检查空的args,因为否则,这将删除整个$ GOPATH / src文件夹,并且您不希望这样做。

如果您不在Mac操作系统下,则需要编辑“ darwin_amd64”文件夹,如果您不在鱼上,则将无法正常工作,但您可以对其进行修改以适合您当前的外壳。

export GOPATH=$HOME/Go

function godel
   if string length -q $argv
      rm -rf $GOPATH/src/$argv $GOPATH/pkg/darwin_amd64/$argv.a
      find $GOPATH -type d -empty -delete
   else
      echo you must send an argument
   end
end