когда буфер протокола компиляции, пропущенный ввод или программа не являются исполняемой ошибкой - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь сделать golang + grpc server на mac. Я установил golang, grpc, буфер протокола и проверил, что сервер grpc следует этому примеру https://grpc.io/docs/quickstart/go/ Проблема заключается в том, что я пытаюсь скомпилировать файл .proto, используя буфер протокола, в котором говорится «отсутствует ввод» или «программа не выполняется».

установить буфер протокола и grpc

brew install grpc protobuf

установить плагин Proto на основе golang

go get github.com/golang/protobuf/protoc-gen-go

путь к протоколу

which protoc
/usr/local/bin/protoc

пример местоположения

/Users/usrname/go/src/google.golang.org/grpc/examples/helloworld

запуск протокомпилятора

protoc -I=/Users/username/go/src/google.golang.org/grpc/examples/helloworld/helloworld/ --go_out=/Users/username/go/src/google.golang.org/grpc/examples/helloworld/helloworld/ /Users/username/go/src/google.golang.org/grpc/examples/helloworld/helloworld/helloworld.proto

сообщение об ошибке

protoc-gen-go: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--go_out: protoc-gen-go: Plugin failed with status code 1.

1 Ответ

0 голосов
/ 04 октября 2019

Это было упомянуто в golang/protobuf выпуск 795

См. Раздел Installation на странице README:

Возьмите код из репозитория и установите пакет proto.
Самый простой способ - запустить go get -u github.com/golang/protobuf/protoc-gen-go.

Плагин компилятора, protoc-gen-go, будет установлен в $GOPATH/bin, если не установлен $GOBIN. Он должен быть в вашем $PATH для компилятора протокола, protoc, чтобы найти его.

Так что дважды проверьте значение вашего $GOPATH (~/go по умолчанию, если не установлено))

Если $GOPATH/bin (или ~/go/bin) в вашей $PATH?

OP camilla подтверждает, что это не так:

$PATH также имеет :/Users/username/go/bin/protoc-gen-go

Он должен иметь :/Users/username/go/bin

...