为了账号安全,请及时绑定邮箱和手机立即绑定

无法安装 Go 包

无法安装 Go 包

Go
森林海 2021-11-22 17:00:09
当我运行时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 deniedutkbansal@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/goutkbansal@Dell:~$ go envGOARCH="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:~$ $PATHbash: /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
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

godoc似乎是一般go get做法的一个例外,因为它安装到 go 安装 ( $GOROOT/bin) 而不是$GOPATH. 所以,如果你真的需要更新godoc(为什么?),你需要做的是:

  1. 以 root 身份登录(或su、 或sudo su、 或 ...)

  2. 设置$GOPATH为您的普通用户$GOPATH"/home/utkbansal/go")

  3. 更新godoc、使用go get -u golang.org/x/tools/cmd/godoc或所有工具

  4. 为您的$GOPATHIE设置适当的权限chown -R utkbansal:utkbansal $GOPATH(仍为 root)

我猜应该可以。但是:你为什么要更新godoc?如果您只想要一个未预装的特定工具,您应该可以在go get没有 root 权限的情况下使用它。


查看完整回答
反对 回复 2021-11-22
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

mrd0ll4r 对这个问题有很好的解释,但我想分享一种更简单的安装godoc. 假设你$GOPATH在你的.bashrc(或类似的)尝试中设置:

sudo -E go get golang.org/x/tools/cmd/godoc

使用该-E标志,您可以保留当前的环境变量(包括$GOPATH)。


查看完整回答
反对 回复 2021-11-22
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

因为你使用了 -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 commands

exit


查看完整回答
反对 回复 2021-11-22
  • 3 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信