无法安装 Go 包

当我运行时go get,我得到一个权限被拒绝错误,当我尝试时sudo go get我得到一个 GOPATH not set 错误。


utkbansal@Dell:~$ go  get -u golang.org/x/tools/cmd/...

go install golang.org/x/tools/cmd/godoc: open /usr/lib/go/bin/godoc: permission denied


utkbansal@Dell:~$ sudo go  get -u golang.org/x/tools/cmd/...

package golang.org/x/tools/cmd/...: cannot download, $GOPATH not set. For more details see: go help gopath

这是我的 $PATH、go env 和 which go 命令的结果。


utkbansal@Dell:~$ which go

/usr/lib/go/bin/go


utkbansal@Dell:~$ go env

GOARCH="amd64"

GOBIN=""

GOEXE=""

GOHOSTARCH="amd64"

GOHOSTOS="linux"

GOOS="linux"

GOPATH="/home/utkbansal/go"

GORACE=""

GOROOT="/usr/lib/go"

GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"

GO15VENDOREXPERIMENT=""

CC="gcc"

GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"

CXX="g++"

CGO_ENABLED="1"



utkbansal@Dell:~$ $PATH

bash: /usr/lib/go/bin:/home/utkbansal/miniconda/bin:/usr/local/heroku/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/go/bin: No such file or directory

我该如何解决?


我正在使用这个 PPA https://launchpad.net/~ubuntu-lxc/+archive/ubuntu/lxd-stable (ppa:ubuntu-lxc/lxd-stable) 中的 go1.5


森林海
浏览 197回答 3
3回答

梵蒂冈之花

godoc似乎是一般go get做法的一个例外,因为它安装到 go 安装 ( $GOROOT/bin) 而不是$GOPATH. 所以,如果你真的需要更新godoc(为什么?),你需要做的是:以 root 身份登录(或su、 或sudo su、 或 ...)设置$GOPATH为您的普通用户$GOPATH( "/home/utkbansal/go")更新godoc、使用go get -u golang.org/x/tools/cmd/godoc或所有工具为您的$GOPATHIE设置适当的权限chown -R utkbansal:utkbansal $GOPATH(仍为 root)我猜应该可以。但是:你为什么要更新godoc?如果您只想要一个未预装的特定工具,您应该可以在go get没有 root 权限的情况下使用它。

猛跑小猪

mrd0ll4r 对这个问题有很好的解释,但我想分享一种更简单的安装godoc. 假设你$GOPATH在你的.bashrc(或类似的)尝试中设置:sudo -E go get golang.org/x/tools/cmd/godoc使用该-E标志,您可以保留当前的环境变量(包括$GOPATH)。

慕雪6442864

因为你使用了 -u 标志,它首先尝试更新已经安装的包,并且在 /usr/lib/go/bin/godoc 有一个二进制文件当你用 sudo 运行它时,它没有你的环境变量,所以它不再有 GOPATH 变量你可以进入root模式并从那里运行它sudo su export GOROOT="/usr/lib/go"export GOPATH="/home/utkbansal/go"go get -u golang.org/x/tools/cmd/...# other commandsexit
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go