从源代码构建一个go项目

时间:2013-12-02 18:22:57

标签: build go

如何从源代码构建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的链接

1 个答案:

答案 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”来下载项目的依赖项。有时,如果你有一些不是“可以获得”的东西,那么如果依赖是有用的话。