“go.tools”的权限被拒绝错误
Posted
技术标签:
【中文标题】“go.tools”的权限被拒绝错误【英文标题】:Permission denied error for 'go.tools' 【发布时间】:2014-12-03 13:33:51 【问题描述】:当我尝试安装 go 工具时,/usr/local/go/pkg/tool/linux_amd64/cover
的权限被拒绝。我可以接受,因为它是/usr/local/
目录并且需要root
访问权限。
但我的第一个疑问是为什么当我将GOPATH
设置为其他位置时它会尝试安装在此位置。
$ go version
go version go1.2.1 linux/amd64
$ export GOPATH='/home/vagrant/repos/atlantis-router/vendor'
$ 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/linux_amd64/cover: permission denied
$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/vagrant/repos/atlantis-router/vendor"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"
谁能指导我解决这个问题?可能是什么原因?
【问题讨论】:
【参考方案1】:Go 尝试将该工具安装在 $GOTOOLDIR
中,而不是 $GOPATH
,并且您可以看到它设置为 /usr/local/go/pkg/tool/linux_amd64
。同样的事情也发生在我身上。
我猜,只需使用 sudo 运行它,因为该目录中还有其他工具,而且我认为将 GOTOOLDIR 设置到其他地方可能会搞砸。
【讨论】:
使用 'sudo' 运行 'go get' 失败并显示 'sudo: go: command not found'。我用'sudo go get code.google.com/p/go.tools/cmd/cover' @ram 将/usr/local/go/bin
添加到 root 的 $PATH
我的 $PATH 显示它包含在 $PATH 中。 “$ echo $PATH /home/vagrant/bin:/usr/local/sbin:....:/usr/local/go/bin”。和你说的不一样吗?
sudo echo $PATH
说什么?
@ram 所以只需运行sudo -s
然后运行 go get 以 root 身份正常运行以上是关于“go.tools”的权限被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章
apache配置中的权限被拒绝:[Errno 13]权限被拒绝