繁体   English   中英

`go get` 失败,某些 go 包的权限被拒绝

[英]`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

我该如何解决这个问题?

  1. godocgo tool vetgo tool cover等是特殊的go.tools命令,默认情况下,这些命令与 go 二进制文件一起安装到系统路径中。 如果这些命令不可用,您应该尝试重新安装 go 本身(或在您的打包系统中找到go.tools )。

    注意:在 OS X 10.8+ 上,尝试使用Homebrew而不是官方的 .pkg 安装程序安装 go,你的麻烦应该消失了(从 go 1.4 开始): brew install go

  2. 如果您想将特定的 pkg 下载到您的$GOPATH (例如 3rd 方依赖项)中,请改用go get -d <pkg> 例子:

     go get -d code.google.com/p/go.tools/cmd/cover
  3. 根本不需要使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM