wake-up-neo.com

Protobuf kann nicht als Endpunkt erstellt werden

mit protobuf Version 2.6.1 (die ich über Homebrew installiert habe) 

Ich versuche zu rennen 

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

Ich erhalte diesen Fehler immer wieder. 

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

Ich habe das Protoc-Gen-Go in meinem Go-Pfad installiert. Hat sonst noch jemand dieses Problem?

41
R.J. Robinson

protoc-gen-go muss sich in Ihrem Shell -Pfad befinden, d. h. eines der Verzeichnisse, die in der Umgebungsvariablen PATH aufgeführt sind. Dies unterscheidet sich vom Go-Pfad. Sie können dies testen, indem Sie einfach protoc-gen-go in die Befehlszeile eingeben: Wenn der Befehl "Befehl nicht gefunden" (oder ähnliches) lautet, steht er nicht in Ihrer PATH.

38
Kenton Varda

Verwenden 

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

ist sicherer als mit 

$ Sudo apt-get install golang-goprotobuf-dev

Weil der neueste protoc-gen-go die lib github.com/golang/protobuf/proto verwendet, aber protoc-gen-go in apt-get die lib code.google.com/p/goprotobuf/proto verwendet, die jetzt nicht vorhanden ist.

22
Xibai Li

Auf Ubuntu 18.04 wird dies überprüft, um dieses Problem zu lösen: 

Sudo apt-get install golang-goprotobuf-dev

6
00imvj00
  1. Sie sollten Ihren GO_PATH genau definieren, wo Ihre Go-Pakete Live ..__ sind. Mit anderen Worten, GO_PATH ist Ihr Go-Workspace. Der GO_PATH Sollte ~/go sein.

  2. protoc-gen-go sollte in Ihrer PATH enthalten sein. Während protoc-gen-go nach der Installation in $GO_PATH/bin lebt.


Fügen Sie diese 2 wichtigen Zeilen Ihrem ~/.bash_profile hinzu:

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

Dann müssen Sie eine neue Shell-Sitzung starten oder einfach folgende Zeile eingeben:

$ source ~/.bash_profile
3
Quy Tang

Wie habe ich gelöst:

  1. Fügen Sie $GOPATH/bin zu PATH hinzu, indem Sie export PATH=$PATH:$GOPATH/bin ausführen.
  2. füge export GOPATH=$(go env GOPATH) oberhalb der export PATH=$PATH:$GOPATH/bin-Zeile in der .bash_profile-Datei hinzu.
  3. führen Sie go get -u erneut für die erforderlichen Pakete aus.
  4. führen Sie in Ihrem Fall den Code protoc --go_out=../cloud/ *.proto aus.
2
ShiningGo

Ich traf das gleiche 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.

Die lösung wie folgt:

Suchen Sie das Installationsverzeichnis von protoc-gen-go, es muss sich in Ihrem $PATH befinden.

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

Sie sollten es besser zu Ihrem .bash_profile hinzufügen

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

dann ist alles ok.

1
pangpang

Ich habe Ubuntu 18.04.02 LTS und protoc mit installiert

Sudo apt install protobuf-compiler

Ich habe meinen GOPATH und GOBIN richtig eingestellt, aber als ich einen protoc --go_out=. <filename> Machte, bekam ich immer noch

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

Nachdem ich ein paar Orte gelesen hatte, konnte ich feststellen, dass dies der Fall war

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

konnte das Problem beheben. Hoffe das hilft jemandem da draußen.

0
Bhaskar Reddy

Stellen Sie sicher, dass der Pfad zu proton-gen-go in Ihrer Variable PATH absolut ist (d. H. /Users/me/go/bin anstelle von ~/go/bin).

Anscheinend kann protoc nicht wissen, wie ~ erweitert werden soll. 

0
Pep

Mby wird für jemanden helfen. Ich bin auf Fedora 29.

Als ich Go installiert habe, habe ich:

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

Also habe ich meinen GOPATH eingerichtet. Als nächstes mache ich:

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

Und meine protoc-Compiler-Arbeit ist ein Charme.

0
Dzintars