我想为使用go
构建的OSS项目做出贡献,但我很难编译它。看起来好像我错过了一些明显的东西。
我认为问题与我的计算机上安装go
的方式有关,而不是与项目本身有关,因此我将其发布在StackOverflow上,而不是项目&#s;&# 34;问题"部分。
以下是我正在做的事情。
我使用homebrew
go
$ brew install go
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
libebml
==> Downloading https://homebrew.bintray.com/bottles/go-1.8.3.sierra.bottle.tar.gz
Already downloaded: /Users/gmile/Library/Caches/Homebrew/go-1.8.3.sierra.bottle.tar.gz
==> Pouring go-1.8.3.sierra.bottle.tar.gz
==> Caveats
A valid GOPATH is required to use the `go get` command.
If $GOPATH is not specified, $HOME/go will be used by default:
https://golang.org/doc/code.html#GOPATH
You may wish to add the GOROOT-based install location to your PATH:
export PATH=$PATH:/usr/local/opt/go/libexec/bin
==> Summary
/usr/local/Cellar/go/1.8.3: 7,035 files, 282.0MB
$
然后我克隆了回购:
$ hub clone lucapette/fakedata
我跑了make setup
(每条指令),最初没有成功完成:
$ make setup
go get -u github.com/alecthomas/gometalinter
gometalinter --install
make: gometalinter: No such file or directory
make: *** [setup] Error 1
$
我认为这是因为我gometalinter
中没有$PATH
,所以添加了它(我使用fish-shell):
$ set fish_user_paths /Users/gmile/go/bin
现在似乎已成功运行make setup
。这是输出:
$ make setup
go get -u github.com/alecthomas/gometalinter
gometalinter --install
Installing:
aligncheck
deadcode
dupl
errcheck
gas
goconst
gocyclo
goimports
golint
gosimple
gotype
ineffassign
interfacer
lll
megacheck
misspell
safesql
staticcheck
structcheck
unconvert
unparam
unused
varcheck
$
正在运行make build
失败:
$ make build
go build
main.go:11:2: cannot find package"github.com/lucapette/fakedata/pkg/fakedata" in any of:
/usr/local/Cellar/go/1.8.3/libexec/src/github.com/lucapette/fakedata/pkg/fakedata (from $GOROOT)
/Users/gmile/go/src/github.com/lucapette/fakedata/pkg/fakedata (from $GOPATH)
main.go:12:2: cannot find package "github.com/spf13/pflag" in any of:
/usr/local/Cellar/go/1.8.3/libexec/src/github.com/spf13/pflag (from $GOROOT)
/Users/gmile/go/src/github.com/spf13/pflag (from $GOPATH)
make: *** [build] Error 1
$
因此Contributing指南不完整,或者我错过了有关安装和管理go包的明显信息。
答案 0 :(得分:5)
克隆源代码时的路径必须在golang PATH上:
/home/gujarat/golang/src/github.com/lucapette/fakedata
你可以看到我的golang路径是:/home/gujarat/golang/
。
您还可以输入以下内容在终端中打印golang路径:$GOPATH
。
git clone
应与上述路径完全相同:src/github.com/lucapette/
。
cd $GOPATH/src/github.com/
mkdir lucaptte
cd lucapette
git clone https://github.com/lucapette/fakedata.git
当您运行触发make
的{{1}}命令时,此命令将显示go build
和您的$GOPATH
文件夹。
答案 1 :(得分:0)
你的go源应该在你的gopath中 - 这里是Users / gmile / src。使用go get来获取你想要工作的pkg,它应该可以工作。