go install:GOPATH之外的目录

时间:2014-11-28 16:39:30

标签: macos go

我刚刚安装了Go,但我无法让go install工作。我按照YouTube上的教程写了一个HelloWorld.go应用程序,但我一直收到错误:

go install: no install location for directory /Users/####/Documents/Dev/go/src/github.com/####/hello outside GOPATH

这是我的go env

GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/####/Documents/Dev/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"

在我关注的教程中,GOPATH也被设置为一个文件夹然后我打算创建文件夹/src/github.com/.....etc然后运行go install in我的代码的目录。这是代码,虽然我想这个代码没有太大的错误:

package main

import "fmt"

func main() {
    fmt.Println("Hello, world!");
}

当我使用我的代码在目录中运行pwd命令时,这是输出: /Users/####/Documents/Dev/go/src/github.com/####/hello

当我使用我的代码在目录中运行echo $GOPATH命令时,这是输出: /Users/####/Documents/Dev/go

我正在运行Mac OSX Yosemite。

1 个答案:

答案 0 :(得分:0)

我可以想到两种可能性:

  1. GOBIN环境变量
  2. 我建议您阅读有关go命令的文档,特别是the section on the GOPATH envvar。引用:

      

    bin /目录包含已编译的命令。每个命令都以其源目录命名,但仅以最终元素命名,而不是整个路径。也就是说,DIR / src / foo / quux中带有源的命令安装在DIR / bin / quux中,而不是DIR / bin / foo / quux中。 foo /被剥离,以便您可以将DIR / bin添加到PATH以获取已安装的命令。如果设置了GOBIN环境变量,则命令将安装到它命名的目录而不是DIR / bin。

    Go可能会尝试在此处安装您的程序,并遇到权限错误。可能只是一个糟糕的错误消息。在任何情况下,我都不清楚你为什么设置$GOBIN。要将go工具添加到PATH,请直接添加目录:export PATH=/usr/local/go/bin:$PATH

    1. 不区分大小写的文件系统
    2. 如果这不起作用,请检查主目录的大小写,以及https://stackoverflow.com/a/27430341中的问题。