2014-11-06 61 views
5

安装一些去包不准失败,permission denied错误,例如:OSX - `去GET`失败,某些去包

$ 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

你应该不需要使用sudo锤子。将$ GOPATH指向您拥有的目录。 – 2014-11-06 06:54:59

+0

请参阅http://stackoverflow.com/questions/26291382/how-do-i-control-where-go-get-puts-things/26371095#26371095。 – 2014-11-06 15:01:46

+0

@ 3of3这两个问题和答案都有所改进。感谢您的大力帮助! – 2014-11-06 18:51:54

回答

13
  1. godocgo tool vetgo tool cover等是打算要安装到系统路径默认与去二进制特殊go.tools命令。如果这些命令不可用,则应尝试重新安装(或在您的打包系统中找到go.tools)。

    注:在OS X 10.8+,尝试安装使用Homebrew,而不是正式的.pkg安装程序去你的烦恼应该消失(截至去1.4):brew install go

  2. 如果你想下载一个特定的pkg转换成您的$GOPATH(例如第三方依赖项),请改为使用go get -d <pkg>。例如:

    go get -d code.google.com/p/go.tools/cmd/cover 
    
  3. 应该需要在所有使用sudo锤,为您$GOPATH应该指向你自己的目录,因此没有permission: denied错误的。

    但如果你真的知道自己在做什么,你还是要sudo安装的东西,你需要编辑sudoers文件首先解决根的GOPATH:

    $ sudo visudo 
    

    添加以下行:

    Defaults env_keep += "GOPATH" 
    

    这将使sudo go get(根上下文)拿起你的$GOPATH值。

+1

通过大量的答案搜索了10个类似的问题后,这是唯一的答案,完全覆盖了一切!谢谢! – 2015-01-26 05:54:33

2

我刚碰到这个,因为我安装了MacPorts。 Vojtech Vitek的回答指出了我正确的方向,但我认为我会继续发布我需要的文字解决方案。

运行sudo port install go-tools。我不知道为什么godoc et al不包含在base go包中,但是不管。