Mac执行go build时出现权限拒绝错误,go run可正常运行
Go Build 提示权限拒绝但 Go Run 正常的解决办法
问题现象
执行go build时出现如下错误:
open /Users/an../Library/Caches/go-build/32/3284dc1dfe0121246372cec7d0efeba47a547120b3fa696ef6283422d69cd994-a: permission denied
但go run命令可以正常执行代码。
原因分析
Go Build 会将编译中间产物写入系统的 Go 构建缓存目录(~/Library/Caches/go-build),若该目录或内部文件权限异常,就会触发权限拒绝错误;而 Go Run 是编译后直接在临时环境运行程序,不会将中间产物持久化到缓存目录,因此不受影响。
解决步骤
- 清理 Go 构建缓存:执行命令
该命令会清空整个 Go 构建缓存,直接解决缓存文件权限异常问题。go clean -cache - 手动修复缓存目录权限:如果清理缓存无效,可直接修改缓存目录的所属权限,执行命令(将
[你的用户名]替换为实际系统用户名)sudo chown -R $USER:$USER /Users/[你的用户名]/Library/Caches/go-build - 排查安全软件拦截:部分杀毒软件或系统权限工具可能限制缓存目录的读写,可暂时关闭这类工具或把
go-build缓存目录加入白名单。
内容的提问来源于stack exchange,提问作者Anup
相关产品推荐
相关产品推荐

