utilisant la version 2.6.1 de protobuf (que j’ai installée via homebrew)
J'essaye de courir
$ protoc --go_out=../cloud/ *.proto
Je continue à recevoir cette erreur.
$ protoc-gen-go: program not found or is not executable
$ --go_out: protoc-gen-go: Plugin failed with status code 1.
J'ai le protoc-gen-go installé dans mon chemin d'accès. Quelqu'un d'autre a ce problème?
protoc-gen-go
doit figurer dans votre Shell chemin, c’est-à-dire l’un des répertoires répertoriés dans la variable d’environnement PATH
, qui est différent du chemin Go. Vous pouvez tester cela en tapant simplement protoc-gen-go
sur la ligne de commande: Si le message "commande introuvable" (ou similaire) ne figure pas dans votre PATH
.
En utilisant
$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
est plus sûr que d'utiliser
$ Sudo apt-get install golang-goprotobuf-dev
Parce que le dernier protoc-gen-go
utilise la lib github.com/golang/protobuf/proto
, mais protoc-gen-go
dans apt-get
en utilisant la lib code.google.com/p/goprotobuf/proto
qui n'existait pas maintenant.
Sur Ubuntu 18.04, ceci est vérifié pour résoudre ce problème:
Sudo apt-get install golang-goprotobuf-dev
Vous devez définir correctement votre GO_PATH
- où se trouvent vos paquets go Live . En d'autres termes, GO_PATH
est votre espace de travail go. Le GO_PATH
.__ devrait être ~/go
.
protoc-gen-go
devrait être dans votre PATH
. Alors que protoc-gen-go
habite dans $GO_PATH/bin
après l'avoir installé.
Ajoutez ces 2 lignes importantes à votre ~/.bash_profile
:
export GO_PATH=~/go
export PATH=$PATH:/$GO_PATH/bin
Ensuite, vous devez démarrer une nouvelle session Shell ou simplement taper dans cette ligne:
$ source ~/.bash_profile
Comment j'ai résolu:
$GOPATH/bin
à PATH en exécutant export PATH=$PATH:$GOPATH/bin
export GOPATH=$(go env GOPATH)
ci-dessus export PATH=$PATH:$GOPATH/bin
ligne à l'intérieur du fichier .bash_profile
.go get -u
pour les packages requis.protoc --go_out=../cloud/ *.proto
dans votre cas.J'ai rencontré le même problème.
$ 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.
La solution ci-dessous:
Recherchez le répertoire d'installation de protoc-gen-go
, il doit être dans votre $PATH
.
export PATH=$PATH:/path/to/dir
Vous feriez mieux de l'ajouter à votre .bash_profile
echo $"export PATH=\$PATH:$(/path/to/dir)" >> ~/.bash_profile
source ~/.bash_profile
alors tout va bien.
Assurez-vous que le chemin d'accès à proton-gen-go
dans votre variable PATH
est absolu (à savoir /Users/me/go/bin
au lieu de ~/go/bin
.
Apparemment, protoc
ne sait pas comment développer ~
.
Mby aidera pour quelqu'un. Je suis sur Fedora 29.
Quand j'ai installé Go j'ai fait:
echo 'export GOPATH=$HOME/Go' >> $HOME/.bashrc
source $HOME/.bashrc
Donc j'ai mon GOPATH mis en place . Ensuite je fais:
echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc
source $HOME/.bashrc
Et mon compilateur protoc
fonctionne comme un charme.