OS X下运行sudo go command
写code的时候遇到需要修改/etc/hosts
的情况,这个文件需要root权限才能修改。在container上能够成功运行,而在Mac本地调试时遇到权限问题。这个时候想当然地运行sudo ginkgo *
,信心满满地敲完密码后看的如下错误信息:
package **: cannot download, $GOPATH not set. For more details see: go help gopath
这是因为go相关工具的执行文件安装在当前用户环境(GOPATH, GOROOT)下,而这个路径是普通用户的。Sudoers的环境下没有相关的信息。所以我们需要做如下3步操作:
0x01. 确认需要修改Sudoers配置信息
首先需要提一句:如没必要,不要使用sudo
锤子。只有在清楚知道你在做什么情形下,才去执行命令。
0x02. 进入配置文件sudoers
配置文件在/etc/sudoers
,你也可以直接敲sudo visudo
命令修改配置。
0x03. 添加golang环境信息。
在文件相应位置添加如下两行:
Defaults env_keep += "GOPATH"
Defaults env_keep += "GOROOT"
0x0F. Refs: osx - go get fails with permission denied on certain go packages