Unable to build protobuf to go endpoint
GoProtocol BuffersGo Problem Overview
using protobuf version 2.6.1 ( which i installed via homebrew)
I am trying to run
$ protoc --go_out=../cloud/ *.proto
I keep receiving this error.
$ protoc-gen-go: program not found or is not executable
$ --go_out: protoc-gen-go: Plugin failed with status code 1.
I have the protoc-gen-go installed in my go path. Anyone else have this issue?
Go Solutions
Solution 1 - Go
protoc-gen-go
needs to be in your shell path, i.e. one of the directories listed in the PATH
environment variable, which is different from the Go path. You can test this by simply typing protoc-gen-go
at the command line: If it says "command not found" (or similar) then it's not in your PATH
.
Solution 2 - Go
Using
$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
is more safe than using
$ sudo apt-get install golang-goprotobuf-dev
Because the latest protoc-gen-go
is using the lib github.com/golang/protobuf/proto
, but protoc-gen-go
in apt-get
using the lib code.google.com/p/goprotobuf/proto
which didn't exist now.
Solution 3 - Go
-
You should properly define your
GO_PATH
- where your go packages live. In other words,GO_PATH
is your go workspace. TheGO_PATH
should be~/go
. -
protoc-gen-go
should be in yourPATH
. Whileprotoc-gen-go
lives in$GO_PATH/bin
after you installed it.
Add these 2 important lines to your ~/.bash_profile
:
export GO_PATH=~/go
export PATH=$PATH:/$GO_PATH/bin
Then you need to start a new shell session or just type in this line:
$ source ~/.bash_profile
Solution 4 - Go
On Ubuntu 18.04, this is verified working to solve this issue:
sudo apt-get install golang-goprotobuf-dev
Solution 5 - Go
I have Ubuntu 18.04.02 LTS and installed protoc
using
sudo apt install protobuf-compiler
I have my GOPATH and GOBIN set correctly, but still when I did a
protoc --go_out=. <filename>
I was getting
protoc-gen-go: program not found or is not executable
--go_out: protoc-gen-go: Plugin failed with status code 1.
After reading bunch of places, was able to find that doing
go get -u github.com/golang/protobuf/protoc-gen-go
was able to fix the issue. Hope this helps someone out there.
Solution 6 - Go
How I solved:
- Add
$GOPATH/bin
to PATH by runningexport PATH=$PATH:$GOPATH/bin
- add
export GOPATH=$(go env GOPATH)
aboveexport PATH=$PATH:$GOPATH/bin
line inside the.bash_profile
file. - run
go get -u
for the required packages again. - run the code
protoc --go_out=../cloud/ *.proto
in your case.
Solution 7 - Go
I met the same problem.
$ 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.
The solution as below:
Find the installation directory of protoc-gen-go
, it must be in your $PATH
.
export PATH=$PATH:/path/to/dir
You'd better add it to your .bash_profile
echo $"export PATH=\$PATH:$(/path/to/dir)" >> ~/.bash_profile
source ~/.bash_profile
then everything is ok.
Solution 8 - Go
What I did to solve this was:
copy protoc-gen-go from the go bin folder in go workspace to /usr/local/bin/
run your command as before in your case "protoc --go_out=../cloud/ *.proto"
Solution 9 - Go
Directly from grpc documentation:
Go plugins for the protocol compiler:
Install the protocol compiler plugins for Go using the following commands:
$ export GO111MODULE=on # Enable module mode
$ go get google.golang.org/protobuf/cmd/protoc-gen-go \
google.golang.org/grpc/cmd/protoc-gen-go-grpc
Update your PATH so that the protoc compiler can find the plugins:
$ export PATH="$PATH:$(go env GOPATH)/bin"
Solution 10 - Go
Mby will help for somebody. I'm on Fedora 29.
When I installed Go I did:
echo 'export GOPATH=$HOME/Go' >> $HOME/.bashrc
source $HOME/.bashrc
So I have my GOPATH set up. Next I do:
echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc
source $HOME/.bashrc
And my protoc
compiler work lika a charm.
Solution 11 - Go
If you're using Fedora, ensure that the package "protoc-gen-go" is installed, and it's binary is in your shel PATH.
$sudo dnf install protoc-gen-go -y
Solution 12 - Go
If found this page because you get the error message in console when you run proto
:
Protoc command not found
If you use linux then follow the instructions below:
- download the protoc file here
https://github.com/protocolbuffers/protobuf/releases/tag/v3.19.4
(i used to download the
protoc-3.19.4-linux-x86_64.zip
in my case. - extract the files in this folder `/home/your_username/.local
- then you will have it like this:
/home/your_username/.local/bin/protoc
- Profit. this will work by typing just "protoc" in your terminal
Solution 13 - Go
I have installed protoc 3.20.0. But I didn't get the tag for generating the code for Golang. I have pasted the screenshot of all available tags.
Solution 14 - Go
Ensure that your path to proton-gen-go
in your PATH
variable is absolute (i.e. /Users/me/go/bin
instead of ~/go/bin
.
Apparently protoc
does not know how to expand ~
.