go build не может найти исходники пакетов

Я пытаюсь создать средство экспорта prometheus teamcity, которое я нашел в этом репозитории.
В файле readme он указывает мне выполнить следующую команду, которая должна построить проект - docker run --rm -v "$PWD":/go/src/github.com/guidewire/teamcity_exporter -w /go/src/github.com/guidewire/teamcity_exporter -e GOOS=linux -e GOARCH=amd64 golang:1.8 go build -o bin/teamcity_exporter -v

Но он терпит неудачу со следующей ошибкой -

teamcity_exporter.go:15:2: cannot find package "github.com/guidewire/teamcity-go-bindings" in any of:
    /go/src/github.com/guidewire/teamcity_exporter/vendor/github.com/guidewire/teamcity-go-bindings (vendor tree)
    /usr/local/go/src/github.com/guidewire/teamcity-go-bindings (from $GOROOT)
    /go/src/github.com/guidewire/teamcity-go-bindings (from $GOPATH)
teamcity_exporter.go:16:2: cannot find package "github.com/orcaman/concurrent-map" in any of:
    /go/src/github.com/guidewire/teamcity_exporter/vendor/github.com/orcaman/concurrent-map (vendor tree)
    /usr/local/go/src/github.com/orcaman/concurrent-map (from $GOROOT)
    /go/src/github.com/orcaman/concurrent-map (from $GOPATH)
collector.go:6:2: cannot find package "github.com/prometheus/client_golang/prometheus" in any of:
    /go/src/github.com/guidewire/teamcity_exporter/vendor/github.com/prometheus/client_golang/prometheus (vendor tree)
    /usr/local/go/src/github.com/prometheus/client_golang/prometheus (from $GOROOT)
    /go/src/github.com/prometheus/client_golang/prometheus (from $GOPATH)
teamcity_exporter.go:18:2: cannot find package "github.com/prometheus/common/log" in any of:
    /go/src/github.com/guidewire/teamcity_exporter/vendor/github.com/prometheus/common/log (vendor tree)
    /usr/local/go/src/github.com/prometheus/common/log (from $GOROOT)
    /go/src/github.com/prometheus/common/log (from $GOPATH)
teamcity_exporter.go:19:2: cannot find package "github.com/prometheus/common/version" in any of:
    /go/src/github.com/guidewire/teamcity_exporter/vendor/github.com/prometheus/common/version (vendor tree)
    /usr/local/go/src/github.com/prometheus/common/version (from $GOROOT)
    /go/src/github.com/prometheus/common/version (from $GOPATH)
config.go:8:2: cannot find package "gopkg.in/yaml.v2" in any of:
    /go/src/github.com/guidewire/teamcity_exporter/vendor/gopkg.in/yaml.v2 (vendor tree)
    /usr/local/go/src/gopkg.in/yaml.v2 (from $GOROOT)
    /go/src/gopkg.in/yaml.v2 (from $GOPATH)

Я пробовал искать менеджеры пакетов go и использовать их для предварительной установки пакетов (перешел через dep и govendor, но оба не подходят для моего варианта использования).

Также открыл проблему в репозитории github, но есть несколько других проблем, которые не не получил никакого ответа, так что я не получаю мои надежды.

Я не очень хорошо знаком с go, поэтому я надеялся, что кто-то здесь может подсказать, что я упускаю.
Спасибо!


person Yaron Idan    schedule 16.11.2018    source источник


Ответы (1)


Я бы рекомендовал изменить go build на go get. Это должно получить все зависимости, а также создать двоичный файл и поместить его в $GOPATH/bin. go build ожидает, что все уже на месте.

person poy    schedule 16.11.2018
comment
Потрясающий! Рад это слышать. - person poy; 16.11.2018
comment
Просто для подтверждения. Я бегу go get, go build. Я не пробовал длинную командную строку из README. - person Dmitry Harnitski; 16.11.2018
comment
go get построит его для вас, и тогда нет причин запускать go build. - person poy; 16.11.2018
comment
Ницца! Рад это слышать. - person poy; 16.11.2018