英文:
Cannot build open-source project
问题
我想为一个使用go
构建的开源项目做贡献,但是我在编译它时遇到了困难。看起来我可能漏掉了一些显而易见的东西。
我认为问题与我计算机上安装的go
有关,而不是与项目本身有关,所以我在这里发布了这个问题,而不是在项目的“Issues”部分。
以下是我所做的事情。
-
我使用
homebrew
安装了go
:$ brew install go 更新 Homebrew... ==> 自动更新 Homebrew! 已更新 1 个 tap(homebrew/core)。 ==> 已更新的 Formulae libebml ==> 正在下载 https://homebrew.bintray.com/bottles/go-1.8.3.sierra.bottle.tar.gz 已下载:/Users/gmile/Library/Caches/Homebrew/go-1.8.3.sierra.bottle.tar.gz ==> 正在倒入 go-1.8.3.sierra.bottle.tar.gz ==> 提示 使用 `go get` 命令需要一个有效的 GOPATH。 如果未指定 $GOPATH,默认将使用 $HOME/go: https://golang.org/doc/code.html#GOPATH 您可能希望将基于 GOROOT 的安装位置添加到 PATH 中: export PATH=$PATH:/usr/local/opt/go/libexec/bin ==> 总结 🎆 /usr/local/Cellar/go/1.8.3: 7,035 个文件,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包有一些显而易见的东西不了解。
英文:
I'd like to contribute to an OSS project built with go
, but I'm having hard time compiling it. It looks as if I'm missing something obvious.
I think the problem is related to how go
is installed on my computer, and not to the project itself, thus I'm posting it here on StackOverflow, instead of project's "Issues" section.
Below is what I'm doing.
-
I've installed
go
usinghomebrew
:$ 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 $
-
Then I cloned the repo:
$ hub clone lucapette/fakedata
-
I ran
make setup
(per instruction), which at first did not complete successfully:$ make setup go get -u github.com/alecthomas/gometalinter gometalinter --install make: gometalinter: No such file or directory make: *** [setup] Error 1 $
I figured that is because
gometalinter
is nowhere in my$PATH
, so have added it (I'm using fish-shell):$ set fish_user_paths /Users/gmile/go/bin
-
running
make setup
seem to have succeeded now. This is the output:$ 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 $
-
Running
make build
fails:$ 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 $
So either Contributing guideline is incomplete, or I'm missing something obvious about installing and managing go packages.
答案1
得分: 5
你克隆源代码时的路径必须在golang的PATH中,例如:/home/gujarat/golang/src/github.com/lucapette/fakedata
。
如你所见,我的golang路径是/home/gujarat/golang/
。你也可以在终端中输入$GOPATH
来打印你的golang路径。
git clone
命令应该在以下路径中执行:src/github.com/lucapette/
。
cd $GOPATH/src/github.com/
mkdir lucaptte
cd lucapette
git clone https://github.com/lucapette/fakedata.git
当你运行make
命令触发go build
时,该命令会查找$GOPATH
和$GOROOT
文件夹。
英文:
Your path when cloning the source must be on the golang PATH like :
/home/gujarat/golang/src/github.com/lucapette/fakedata
as you can see my Path to golang path is : /home/gujarat/golang/
.
You can also print your golang path in your terminal by entering : $GOPATH
.
And the git clone
should be in the following the exact as above path : src/github.com/lucapette/
.
cd $GOPATH/src/github.com/
mkdir lucaptte
cd lucapette
git clone https://github.com/lucapette/fakedata.git
When you are running the make
command which trigger go build
this command will look the $GOPATH
and your $GOROOT
folder.
答案2
得分: 0
你的Go源代码应该位于你的Go路径(GOPATH)中,这里是/Users/gmile/src。使用"go get"命令获取你想要处理的包,然后应该就可以正常工作了。
英文:
Your go source should in your gopath - here it is Users/gmile/src. Use go get to fetch the pkg you want to work on instead and it should work.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论