Golang:安装目录错误?

时间:2013-07-08 10:30:47

标签: go

我有错误:

go install: no install location for directory /Users/xwilly/Dropbox/go/project/src outside GOPATH 

我在OS X上使用的是1.1版。

我可以建立&运行但无法安装包。

我的环境:

GOPATH=/Users/xwilly/Dropbox/go/project
PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/bin:/Users/xwilly/Dropbox/go/project/bin

项目树:

/Users/xwilly/Dropbox/go/project
bin
pkg
src

我可以毫无错误地构建:

..:src xwilly$ go build test.go 
..:src xwilly$ go install test.go
go install: no install location for directory /Users/xwilly/Dropbox/go/project/src outside GOPATH

这是一个简单的例子:

xwilly$ cat test.go 
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Bonjour")
}
xwilly$ go run test.go 
Bonjour
xwilly$ go install test.go 
go install: no install location for directory /Users/xwilly/Dropbox/go/project/src/learning outside GOPATH

1 个答案:

答案 0 :(得分:32)

  

Command go

     

GOPATH environment variable

     

GOPATH中列出的每个目录都必须具有规定的结构:

     

src/目录包含源代码。 “src”下面的路径决定了   导入路径或可执行文件名。

     

pkg/目录包含已安装的包对象。和Go树一样   每个目标操作系统和体系结构都有自己的   pkgpkg/GOOS_GOARCH)的子目录。

     

如果DIRGOPATH中列出的目录,则包含源代码的包   DIR / src / foo / bar可以导入为“foo/bar”并具有其编译形式   安装到“DIR/pkg/GOOS_GOARCH/foo/bar.a”。

     

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

     

这是一个示例目录布局:

GOPATH=/home/user/gocode

/home/user/gocode/
    src/
        foo/
            bar/               (go code in package bar)
                x.go
            quux/              (go code in package main)
                y.go
    bin/
        quux                   (installed command)
    pkg/
        linux_amd64/
            foo/
                bar.a          (installed package object)

您的目录结构错误。您正在尝试安装命令(package main)。它应该位于以命令命名的源目录中。请参阅上面的quux命令。

在您的情况下,假设您的命令将命名为billy

$ mkdir -p /Users/xwilly/Dropbox/go/project/src/billy

位于GOPATH内。将您的test.go文件移动到此目录。运行

$ go install billy

除非您已设置billy,否则命令GOBIN应安装在

/Users/xwilly/Dropbox/go/project/bin
<{1}}内的

目录,该目录应位于GOPATH