如何从源代码构建Go项目,而不是使用go get domain.com/dir/project
?例如,而不是
go get github.com/kr/godep
我想从源代码构建:
git clone https://github.com/kr/godep.git
cd godep
GOPATH=/tmp/godep go build
上述命令将导致
dep.go:4:2: cannot find package "code.google.com/p/go.tools/go/vcs" in any of:
/usr/local/Cellar/go/1.2/libexec/src/pkg/code.google.com/p/go.tools/go/vcs (from $GOROOT)
/Users/hanxue/Source/godep/godep/src/code.google.com/p/go.tools/go/vcs (from $GOPATH)
save.go:5:2: cannot find package "github.com/kr/fs" in any of:
/usr/local/Cellar/go/1.2/libexec/src/pkg/github.com/kr/fs (from $GOROOT)
/Users/hanxue/Source/godep/godep/src/github.com/kr/fs (from $GOPATH)
注意:在/usr/local/Cellar/go/1.2中安装了1.2,其中包含从/usr/local/Cellar/go/1.2/bin/go
到/usr/local/bin/go
的链接
答案 0 :(得分:5)
您需要正确配置GOPATH。有时项目不必在它期望的“子路径”中检出,但通常确实如此,当然依赖它的东西也会在那里找到它。因此,不是“去获取”,而是
mkdir -p /tmp/go/src
export GOPATH=/tmp/go
cd $GOPATH/src
mkdir -p github.com/kr/godep
cd github.com/kr/godep/..
git clone http://github.com/kr/godep.git
cd godep
go build
...现在冲洗并重复每个依赖!
cd $GOPATH/src
mkdir -p code.google.com/p/
cd code.google.com/p
hg clone https://code.google.com/p/go.tools/
是的,vcs依赖项位于“go.tools”中,需要用hg克隆。需要一些网页浏览才能搞清楚。好的,我想你可以看出为什么手工做很烦人。
我会将其余的依赖项作为练习留给读者,或者你可以使用“go get”。 : - )
可能正是您正在寻找的奖金提示:在签出第一个项目后,您可以在该目录中使用“go get”来下载项目的依赖项。有时,如果你有一些不是“可以获得”的东西,那么如果依赖是有用的话。