Go 生成打包程序导致权限被拒绝错误

Go 生成打包程序导致权限被拒绝错误,go,packer,Go,Packer,我正在尝试构建,但遇到以下错误: go install golang.org/x/tools/cmd/vet: open /usr/lib/go/pkg/tool/linux_amd64/vet: permission denied Makefile:40: recipe for target 'test' failed make: *** [test] Error 1 安装程序正在尝试访问我的/usr文件夹吗?我应该在root下运行这个吗?如何修复此问题?go vet很特别,因为它是一个需要

我正在尝试构建,但遇到以下错误:

go install golang.org/x/tools/cmd/vet: open /usr/lib/go/pkg/tool/linux_amd64/vet: permission denied
Makefile:40: recipe for target 'test' failed
make: *** [test] Error 1

安装程序正在尝试访问我的/usr文件夹吗?我应该在root下运行这个吗?如何修复此问题?

go vet
很特别,因为它是一个需要进入GOROOT的工具。在大多数安装中,GOROOT也是用户可写的,但是如果您通过包管理器安装,它就不会是用户可写的

要解决此问题,您可以以root用户身份执行此操作,以避免更改GOPATH中的任何权限:

GOPATH=/tmp/tmpGOPATH go get golang.org/x/tools/cmd/vet
rm -rf /tmp/tmpGOPATH
由于
vet
是官方发行版提供的工具,没有安装它可能被认为是gentoo的
go
包中的一个bug。官方的
go
二进制发行版包括以下工具:

addr2line
api
asm
cgo
compile
cover
dist
doc
fix
link
nm
objdump
pack
pprof
tour
trace
vet
yacc

你使用的是什么版本的围棋?如果您安装了go-vet,它应该可以工作。go版本go1.4.2 linux/amd64。我使用我的os软件包管理器(gentoo)安装了go。我的GOPATH已设置,并且我可以安装其他软件包。这个特殊的软件包正试图安装在/usr中,这是我作为普通用户无法做到的。那么你安装了go-vet吗?试着运行
go-get-golang.org/x/tools/cmd/vet
如果可以
cd$GOPATH/github.com/mitchellh/packer
并运行
go-vet
如果可以,你应该能够运行
make