[英]`go get` fails with permission denied on certain go packages
安装一些 go 包失败,出现permission denied
错误,例如:
$ go get code.google.com/p/go.tools/cmd/cover
go install code.google.com/p/go.tools/cmd/cover: open /usr/local/go/pkg/tool/darwin_amd64/cover: permission denied
当我尝试使用sudo
修复权限问题时,它失败了$GOPATH not set
错误:
$ sudo go get code.google.com/p/go.tools/cmd/cover
Password:
package code.google.com/p/go.tools/cmd/cover: cannot download, $GOPATH not set. For more details see: go help gopath
我该如何解决这个问题?
godoc
、 go tool vet
、 go tool cover
等是特殊的go.tools命令,默认情况下,这些命令与 go 二进制文件一起安装到系统路径中。 如果这些命令不可用,您应该尝试重新安装 go 本身(或在您的打包系统中找到go.tools
)。
注意:在 OS X 10.8+ 上,尝试使用Homebrew而不是官方的 .pkg 安装程序安装 go,你的麻烦应该消失了(从 go 1.4 开始): brew install go
如果您想将特定的 pkg 下载到您的$GOPATH
(例如 3rd 方依赖项)中,请改用go get -d <pkg>
。 例子:
go get -d code.google.com/p/go.tools/cmd/cover
您根本不需要使用sudo
锤子,因为您的$GOPATH
应该指向您拥有的目录,因此根本没有permission: denied
错误。
但是如果你真的知道你在做什么,并且你仍然想要sudo
install 一些东西,你需要首先编辑 sudoers 文件来修复 root 的 GOPATH:
$ sudo visudo
添加以下行:
Defaults env_keep += "GOPATH"
这将使sudo go get
(根上下文)获取您的$GOPATH
值。
我刚遇到这个是因为我安装了 MacPorts。 Vojtech Vitek 的回答为我指明了正确的方向,但我想我会继续发布我需要的文字解决方案。
运行sudo port install go-tools
。 我不知道为什么 godoc 等人不包含在基本的 go 包中,但无论如何。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.