无法构建开源项目

时间:2017-08-19 12:49:20

标签: macos go build

我想为使用go构建的OSS项目做出贡献,但我很难编译它。看起来好像我错过了一些明显的东西。

我认为问题与我的计算机上安装go的方式有关,而不是与项目本身有关,因此我将其发布在StackOverflow上,而不是项目&#s;&# 34;问题"部分。

以下是我正在做的事情。

  1. 我使用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
    $
    
  2. 然后我克隆了回购:

    $ hub clone lucapette/fakedata
    
  3. 我跑了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
    
  4. 现在似乎已成功运行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
    $
    
  5. 正在运行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
    $
    
  6. 因此Contributing指南不完整,或者我错过了有关安装和管理go包的明显信息。

2 个答案:

答案 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,它应该可以工作。