go - $GOPATH 目录和磁盘空间

标签 go diskspace

使用 GO 开发一两年后,我查看了 $GOPATH 目录大小,惊讶地发现它增长到了 4GB。

我知道磁盘空间应该很便宜(在这款 128GB 笔记本电脑 SSD 上并没有那么多),但仍然如此。

所以我的问题是,是否有一些好的做法来管理 $GOPATH 目录的大小?

从头开始是个好主意吗? (虽然可能会非常耗时)

最佳答案

您的说法是,删除 GOPATH 会非常耗时,听起来您正在使用简单的 go get ... 来管理 Go 项目的依赖项。在我的环境中,我做了两件事来使 GOPATH 短暂存在。

  1. 不要使用普通的 go get 进行依赖管理。 Go 1.6 引入了 /vendor 目录。与依赖管理工具一起使用 Glide某个项目的每个依赖项都位于项目目录中。

    1. 这意味着,如果不再需要依赖项,您可以删除项目的 vendor 目录并再次下载依赖项。因此,您只对实际需要的磁盘有依赖关系。

    2. 此外,如果您停止处理某个项目并将其从磁盘中删除,依赖项也会被删除。

  2. 您可以在GOPATH中指定多个路径。与 PATH 环境变量一样,您可以用冒号分隔它们。有趣的是,Go 使用第一个路径来下载项目。在我的机器上,GOPATH 看起来像 $HOME/.gopath:$HOME/projects。因此,如果将所有实际项目放入第二个目录中,则项目和依赖项之间将有清晰的分离。因此,您可以时不时地删除第一个目录,但不必担心必须再次克隆每个项目。

这两件事无助于减少 Go 项目及其依赖项的磁盘使用量,但您可以更好地了解实际需要的内容,并使您能够随时删除依赖项目录。

关于go - $GOPATH 目录和磁盘空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42312185/

相关文章:

c# - 在 Linux 上的 C# 中查找目录的可用空间

go - 尝试了 monad 模式,但仍然有重复的错误处理

go - 如何在DynamoDB UpdateItem中更新数组对象

go - 函数外的变量声明快捷方式

python - 如何使用 Python 在 Windows 中获取原始磁盘或 block 设备大小

linux - 如何使用CentOS5.8在XFS中保留连续 block ?

mysql - 使用 InnoDB,我如何收回索引空间?

go - 将 float 分配给struct的整数元素

multithreading - atomic.Load 和atomic.Store 的意义是什么

git - 当 'rhc tidy' 磁盘空间不足时,如何清理 openshift 上的磁盘空间?