为何go mod占用非GOPATH所在磁盘(C盘)空间?(Windows+WSL环境)
解决WSL环境下Go依赖下载占用Windows C盘空间的问题
问题根源
WSL拥有独立的文件系统环境,默认情况下Go的模块缓存和依赖存储会放在WSL自身的根文件系统中(该路径映射到Windows的C盘%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited...\LocalState\rootfs目录),而非你在Windows系统中设置的D盘GOPATH。
具体解决步骤
在WSL中配置正确的GOPATH
打开WSL终端,编辑shell配置文件(比如~/.bashrc或~/.zshrc),添加以下内容:export GOPATH=/mnt/d/go export PATH=$PATH:$GOPATH/bin这里的
/mnt/d/go对应Windows系统中的D:\go,根据你实际的GOPATH路径调整。保存后执行source ~/.bashrc(或对应配置文件)使设置生效。指定Go模块缓存目录
Go 1.13及以上版本支持通过GOMODCACHE环境变量自定义模块缓存位置,继续在上述配置文件中添加:export GOMODCACHE=$GOPATH/pkg/mod同样执行
source命令生效。迁移已存在的依赖缓存(可选)
如果之前已经下载过依赖到C盘的WSL目录,先找到默认的缓存位置(通常是~/go/pkg/mod和~/.cache/go-build),将这两个目录的内容复制到/mnt/d/go/pkg/mod和/mnt/d/go/.cache/go-build,然后删除原目录释放C盘空间。验证配置
在WSL终端执行go env,检查输出中的GOPATH和GOMODCACHE是否正确指向/mnt/d开头的路径。之后重新运行go mod tidy或单元测试,确认C盘不再被占用。
内容的提问来源于stack exchange,提问作者Radu Z.
相关产品推荐
相关产品推荐

