【问题标题】:vim-go can not find correct GOPATHvim-go 找不到正确的 GOPATH
【发布时间】:2018-11-13 07:07:32
【问题描述】:

当我在 Vim 的 sudo 用户下安装 vim-go 时

:GoInstallBinaries

它报告错误:

vim-go: gogetdoc not found. Installing github.com/zmb3/gogetdoc to folder /usr/local/go/bin
Error installing github.com/zmb3/gogetdoc: go build github.com/zmb3/gogetdoc: open /usr/local/go/bin/gogetdoc: permission denied^@
vim-go: guru not found. Installing golang.org/x/tools/cmd/guru to folder /usr/local/go/bin
Error installing golang.org/x/tools/cmd/guru: go build golang.org/x/tools/cmd/guru: open /usr/local/go/bin/guru: permission denied^@
vim-go: golint not found. Installing golang.org/x/lint/golint to folder /usr/local/go/bin
Error installing golang.org/x/lint/golint: go build golang.org/x/lint/golint: open /usr/local/go/bin/golint: permission denied^@
vim-go: fillstruct not found. Installing github.com/davidrjenni/reftools/cmd/fillstruct to folder /usr/local/go/bin
Error installing github.com/davidrjenni/reftools/cmd/fillstruct: go build github.com/davidrjenni/reftools/cmd/fillstruct: open /usr/local/go/bin/fillstruct: permission d
enied^@
vim-go: godef not found. Installing github.com/rogpeppe/godef to folder /usr/local/go/bin
Error installing github.com/rogpeppe/godef: go build github.com/rogpeppe/godef: open /usr/local/go/bin/godef: permission denied^@
vim-go: motion not found. Installing github.com/fatih/motion to folder /usr/local/go/bin
Error installing github.com/fatih/motion: go build github.com/fatih/motion: open /usr/local/go/bin/motion: permission denied^@
vim-go: errcheck not found. Installing github.com/kisielk/errcheck to folder /usr/local/go/bin
Error installing github.com/kisielk/errcheck: go build github.com/kisielk/errcheck: open /usr/local/go/bin/errcheck: permission denied^@
vim-go: dlv not found. Installing github.com/derekparker/delve/cmd/dlv to folder /usr/local/go/bin
Error downloading github.com/derekparker/delve/cmd/dlv: github.com/derekparker/delve (download)^@# cd /home/fred/go/src/github.com/derekparker/delve; git pull --ff-only^
@error: cannot open .git/FETCH_HEAD: Permission denied^@^@package github.com/derekparker/delve/cmd/dlv: exit status 1^@
Error installing github.com/derekparker/delve/cmd/dlv: go build github.com/derekparker/delve/cmd/dlv: open /usr/local/go/bin/dlv: permission denied^@
vim-go: gocode not found. Installing github.com/mdempsky/gocode to folder /usr/local/go/bin
Error installing github.com/mdempsky/gocode: go build github.com/mdempsky/gocode: open /usr/local/go/bin/gocode: permission denied^@
vim-go: impl not found. Installing github.com/josharian/impl to folder /usr/local/go/bin
Error installing github.com/josharian/impl: go build github.com/josharian/impl: open /usr/local/go/bin/impl: permission denied^@
vim-go: iferr not found. Installing github.com/koron/iferr to folder /usr/local/go/bin
Error installing github.com/koron/iferr: go build github.com/koron/iferr: open /usr/local/go/bin/iferr: permission denied^@
vim-go: gotags not found. Installing github.com/jstemmer/gotags to folder /usr/local/go/bin
Error installing github.com/jstemmer/gotags: go build github.com/jstemmer/gotags: open /usr/local/go/bin/gotags: permission denied^@
vim-go: gorename not found. Installing golang.org/x/tools/cmd/gorename to folder /usr/local/go/bin
Error installing golang.org/x/tools/cmd/gorename: go build golang.org/x/tools/cmd/gorename: open /usr/local/go/bin/gorename: permission denied^@
vim-go: goimports not found. Installing golang.org/x/tools/cmd/goimports to folder /usr/local/go/bin
Error installing golang.org/x/tools/cmd/goimports: go build golang.org/x/tools/cmd/goimports: open /usr/local/go/bin/goimports: permission denied^@
vim-go: gocode-gomod not found. Installing github.com/stamblerre/gocode to folder /usr/local/go/bin
Error installing github.com/stamblerre/gocode: go build github.com/stamblerre/gocode: open /usr/local/go/bin/gocode-gomod: permission denied^@
vim-go: gomodifytags not found. Installing github.com/fatih/gomodifytags to folder /usr/local/go/bin
Error installing github.com/fatih/gomodifytags: go build github.com/fatih/gomodifytags: open /usr/local/go/bin/gomodifytags: permission denied^@
vim-go: keyify not found. Installing honnef.co/go/tools/cmd/keyify to folder /usr/local/go/bin
Error installing honnef.co/go/tools/cmd/keyify: go build honnef.co/go/tools/cmd/keyify: open /usr/local/go/bin/keyify: permission denied^@
vim-go: asmfmt not found. Installing github.com/klauspost/asmfmt/cmd/asmfmt to folder /usr/local/go/bin
Error installing github.com/klauspost/asmfmt/cmd/asmfmt: go build github.com/klauspost/asmfmt/cmd/asmfmt: open /usr/local/go/bin/asmfmt: permission denied^@
vim-go: gometalinter not found. Installing github.com/alecthomas/gometalinter to folder /usr/local/go/bin
Error installing github.com/alecthomas/gometalinter: go build github.com/alecthomas/gometalinter: open /usr/local/go/bin/gometalinter: permission denied^@
vim-go: installing finished!

$GOPATH 是:

/home/fred/go:/home/fred/folder1:/home/fred/folder2

为什么 vim-go 安装二进制文件到

/usr/local/go/bin
# sudo 用户权限被拒绝。

不是 $GOPATH 中的第一个路径:

/home/fred/去

【问题讨论】:

  • 除非您使用 -E 选项运行 sudo,否则 GOPATH 环境变量不会传递给执行的命令。您可以尝试使用 sudo -E 标志来解决问题,但最好不要使用 sudo。
  • 您的 GOPATH 环境变量是否已导出?你能运行env | grep GOPATH 来验证它是否显示任何输出吗? vim 中的:GoPath 命令是否显示了您的预期?
  • 我可以在vim中通过:GoPath打印GOPATH的值。
  • 我知道如何将 $GOPATH 从 myuser 传递给 root。 sudo env "PATH=$PATH" go get -u github.com/derekparker/delve/cmd/dlv,问题不是 root 无法获取 gopath,是 myuser 没有权限访问某些系统文件夹,而且似乎我无法在 vim 命令行中使用 sudo。 i在某些情况下使用sudo不方便,但总是别无选择。

标签: go vim vim-plugin


【解决方案1】:

我遇到了同样的问题。

我在 ~./vimrc 中设置go_bin_path 如下来解决这个问题

let g:go_bin_path = $HOME."/go/bin"

【讨论】:

    【解决方案2】:
    sudo chown $LOGNAME /usr/local/go/bin
    

    再试一次

    这将修复权限

    【讨论】:

    • 这是大锤方法。不要这样做,普通用户不应该在那个位置拥有东西。
    • 其实是/usr/local,是我的笔记本,我是普通用户,为什么需要root权限? root 表示 / 而不是 /usr/local 的所有者。抱歉@nos 我不能同意
    • root 用户通常是 / 、 /usr/ /usr/local /etc 的默认所有者。和文件系统层次结构中的其他位置。一旦你开始弄乱这些标准目录中的默认所有权,你就可以很容易地造成混乱。
    • /usr/local 传统上由本地计算机控制,因此可以将权限更改为您想要的任何内容。不好的假设是假设 /usr/local 将具有匹配某种“标准”的权限和布局,因为没有。如果您想“正确地”执行此操作,则将软件制作成一个包,通过验收并将其添加到您的系统中,并使用所有正确的路径。对于 /usr/local 中正在开发的东西,它并不重要。
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2014-03-24
    • 2014-09-06
    • 2016-03-08
    • 2019-04-08
    • 1970-01-01
    相关资源
    最近更新 更多