Подтвердить что ты не робот

Не удалось построить protobuf, чтобы перейти на конечную точку

с использованием protobuf версии 2.6.1 (который я установил через homebrew)

Я пытаюсь запустить

$ protoc --go_out=../cloud/ *.proto

Я продолжаю получать эту ошибку.

$ protoc-gen-go: program not found or is not executable
$ --go_out: protoc-gen-go: Plugin failed with status code 1.

У меня есть protoc-gen-go, установленный в моем пути. У кого-нибудь еще есть эта проблема?

4b9b3361

Ответ 1

protoc-gen-go должен находиться в вашем пути оболочки, то есть к одному из каталогов, перечисленных в переменной среды PATH, которая отличается от пути Go. Вы можете проверить это, просто набрав protoc-gen-go в командной строке: если он говорит "команда не найдена" (или аналогичная), то она не находится в вашем PATH.

Ответ 2

Используя

$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

более безопасен, чем использование

$ sudo apt-get install golang-goprotobuf-dev

Поскольку последний protoc-gen-go использует lib github.com/golang/protobuf/proto, но protoc-gen-go в apt-get, используя lib code.google.com/p/goprotobuf/proto, которого не было сейчас.

Ответ 3

На Ubuntu 18.04 это проверено для решения этой проблемы:

sudo apt-get install golang-goprotobuf-dev

Ответ 4

  1. Вы должны правильно определить свой GO_PATH - где живут ваши пакеты. Другими словами, GO_PATH - это ваше рабочее пространство. GO_PATH должен быть ~/go.

  2. protoc-gen-go должен быть в вашей PATH. Пока protoc-gen-go живет в $GO_PATH/bin после его установки.


Добавьте эти 2 важные строки в ваш ~/.bash_profile:

export GO_PATH=~/go
export PATH=$PATH:/$GO_PATH/bin

Затем вам нужно запустить новый сеанс оболочки или просто ввести следующую строку:

$ source ~/.bash_profile

Ответ 5

Я встретил ту же проблему.

$ protoc --go_out=plugins=grpc:pb/ *.proto
protoc-gen-go: program not found or is not executable
--go_out: protoc-gen-go: Plugin failed with status code 1.

Решение, как показано ниже:

Найдите каталог установки protoc-gen-go, он должен быть в вашем $PATH.

export PATH=$PATH:/path/to/dir

Вам лучше добавить его в свой .bash_profile

echo $"export PATH=\$PATH:$(/path/to/dir)" >> ~/.bash_profile
source ~/.bash_profile

тогда все в порядке.

Ответ 6

Как я решил:

  1. Добавьте $GOPATH/bin в PATH, выполнив export PATH=$PATH:$GOPATH/bin
  2. добавить export GOPATH=$(go env GOPATH) выше export PATH=$PATH:$GOPATH/bin строка внутри файла .bash_profile.
  3. запустите go get -u для требуемых пакетов снова.
  4. запустите код protoc --go_out=../cloud/*.proto в вашем случае.

Ответ 7

Мби поможет кому-то. Я на Fedora 29.

Когда я установил Go, я сделал:

echo 'export GOPATH=$HOME/Go' >> $HOME/.bashrc
source $HOME/.bashrc

Поэтому у меня есть мой GOPATH. Затем я делаю:

echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc
source $HOME/.bashrc

И мой компилятор protoc на очарование.

Ответ 8

Убедитесь, что ваш путь к proton-gen-go в вашей PATH является абсолютным (т.е. /Users/me/go/bin вместо ~/go/bin.

По-видимому, protoc не знает, как расширяться ~.