我有错误:
go install: no install location for directory /Users/xwilly/Dropbox/go/project/src outside GOPATH
我在OS X上使用go版本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
命令去 GOPATH环境变量 列出的每个目录GOPATH必须具有规定的结构: 该src/目录包含源代码。“ src” 下面的路径确定导入路径或可执行文件名称。 该pkg/目录包含已安装的软件包对象。就像在Go树中一样,每个目标操作系统和体系结构对都有其自己的子目录pkg(pkg/GOOS_GOARCH)。 如果DIR是中列出的目录,则GOPATH可以将源为DIR / src / foo / bar的软件包导入为“ foo/bar”,并将其编译形式安装为“ DIR/pkg/GOOS_GOARCH/foo/bar.a”。 该bin/目录包含已编译的命令。每个命令都以其源目录命名,但仅以最后一个元素命名,而不是整个路径。即,源为in的命令DIR/src/foo/quux安装在DIR / bin / quux中,而不是DIR/bin/foo/quux。将foo/被剥离,以便您可以添加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)
命令去
GOPATH环境变量
列出的每个目录GOPATH必须具有规定的结构:
GOPATH
该src/目录包含源代码。“ src” 下面的路径确定导入路径或可执行文件名称。
src/
src
该pkg/目录包含已安装的软件包对象。就像在Go树中一样,每个目标操作系统和体系结构对都有其自己的子目录pkg(pkg/GOOS_GOARCH)。
pkg/
pkg
pkg/GOOS_GOARCH
如果DIR是中列出的目录,则GOPATH可以将源为DIR / src / foo / bar的软件包导入为“ foo/bar”,并将其编译形式安装为“ DIR/pkg/GOOS_GOARCH/foo/bar.a”。
DIR
foo/bar
DIR/pkg/GOOS_GOARCH/foo/bar.a
该bin/目录包含已编译的命令。每个命令都以其源目录命名,但仅以最后一个元素命名,而不是整个路径。即,源为in的命令DIR/src/foo/quux安装在DIR / bin / quux中,而不是DIR/bin/foo/quux。将foo/被剥离,以便您可以添加DIR/bin到您PATH得到在安装命令。如果GOBIN设置了 环境变量,那么命令将安装到它命名的目录中,而不是安装在DIR/bin。
bin/
DIR/src/foo/quux
DIR/bin/foo/quux
foo/
DIR/bin
PATH
GOBIN
这是示例目录布局:
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上面的命令。
package main
quux
就您而言,假设您的命令将被命名为billy。
billy
$ mkdir -p /Users/xwilly/Dropbox/go/project/src/billy
在你的里面GOPATH。将test.go文件移到该目录。跑
test.go
$ go install billy
billy除非已设置,否则该命令应GOBIN安装在
/Users/xwilly/Dropbox/go/project/bin
您的目录GOPATH,该目录应该在您的目录中PATH。