【问题标题】:Build a go project from source从源代码构建一个 go 项目
【发布时间】:2013-12-02 18:22:56
【问题描述】:

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

注意:go 1.2 安装在 /usr/local/Cellar/go/1.2 中,并带有从/usr/local/Cellar/go/1.2/bin/go/usr/local/bin/go 的链接

【问题讨论】:

  • 你必须手动安装code.google.com/p/go.tools/go/vcs等所有依赖项,请仔细设置GOPATHcode.google.com/p/go-wiki/wiki/GOPATH
  • @hanxue 很好奇,用 go get 有什么问题?
  • @nemo 没什么错,实际上这是构建 Go 项目的最佳方式。我想从源代码构建,以便我可以创建自制公式
  • @hanxue 啊,解释了。感谢您的澄清。

标签: build go


【解决方案1】:

您需要正确配置 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”下载项目的依赖项。有时,如果你有一些不能“去获取”的东西,如果依赖项是有用的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 2012-10-29
    • 2016-12-12
    相关资源
    最近更新 更多