我运行go get package下载了一个包,然后才知道我需要设置我的GOPATH,否则这个包会玷污我的根go安装(我更喜欢保持我的go安装干净,并将核心与自定义分离)。如何删除以前安装的包?
当前回答
你可以使用go mod tidy清理未使用的包
其他回答
删除对某个模块的依赖,并降级需要它的模块:
go get example.com/mod@none
来源:run go help get。
你可以使用go mod tidy清理未使用的包
只删除源目录和编译包文件是安全的。在$GOPATH/src下找到源目录,在$GOPATH/pkg/<architecture>下找到包文件,例如:$GOPATH/pkg/windows_amd64。
使用go clean -i importpath....,您可以删除去安装(或去获取)为包生成的存档文件和可执行二进制文件它们通常分别位于$GOPATH/pkg和$GOPATH/bin下。
一定要包括……在importpath上,如果一个包包含一个可执行文件,那么clean -i只会删除它,而不会为子包归档文件,例如下面示例中的gore/gocode。
然后需要手动从$GOPATH/src中删除源代码。
Go clean有一个-n标志,用于在不执行的情况下输出将要运行的内容,因此可以确定(参见Go help clean)。它还有一个诱人的-r标志来递归地清除依赖项,您可能不想实际使用它,因为您将从试运行中看到它将删除大量标准库存档文件!
一个完整的例子,如果你喜欢,你可以在上面创建一个脚本:
$ go get -u github.com/motemen/gore
$ which gore
/Users/ches/src/go/bin/gore
$ go clean -i -n github.com/motemen/gore...
cd /Users/ches/src/go/src/github.com/motemen/gore
rm -f gore gore.exe gore.test gore.test.exe commands commands.exe commands_test commands_test.exe complete complete.exe complete_test complete_test.exe debug debug.exe helpers_test helpers_test.exe liner liner.exe log log.exe main main.exe node node.exe node_test node_test.exe quickfix quickfix.exe session_test session_test.exe terminal_unix terminal_unix.exe terminal_windows terminal_windows.exe utils utils.exe
rm -f /Users/ches/src/go/bin/gore
cd /Users/ches/src/go/src/github.com/motemen/gore/gocode
rm -f gocode.test gocode.test.exe
rm -f /Users/ches/src/go/pkg/darwin_amd64/github.com/motemen/gore/gocode.a
$ go clean -i github.com/motemen/gore...
$ which gore
$ tree $GOPATH/pkg/darwin_amd64/github.com/motemen/gore
/Users/ches/src/go/pkg/darwin_amd64/github.com/motemen/gore
0 directories, 0 files
# If that empty directory really bugs you...
$ rmdir $GOPATH/pkg/darwin_amd64/github.com/motemen/gore
$ rm -rf $GOPATH/src/github.com/motemen/gore
注意,这些信息是基于go 1.5.1版本中的go工具。
go包可以按如下方式移除。
go get package@none
这里@none是设置为none的版本部分。这样就去掉了包装。