'protoc-gen-go-grpc: program not found or is not executable', 尽管所有的努力
'protoc-gen-go-grpc: program not found or is not executable', despite all the efforts
我正在尝试从这个项目 https://github.com/penthaapatel/grpcblog 运行 makefile 命令 'gen'。命令是:protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative blog/blog.proto
但是我得到一个错误:
protoc-gen-go-grpc: program not found or is not executable
--go-grpc_out: protoc-gen-go-grpc: Plugin failed with status code 1.
make: *** [/home/deckard/go/src/grpcblog/Makefile:2: gen] Error 1
我用的是Ubuntu20.04? Golang-1.13.8,$GOROOT=/usr/lib/go-1.13
和 $GOPATH=/home/deckard/go
($HOME 是 /home/deckard
)。协议是 libprotoc v.3.6.1.
。我安装了 protobuf-compiler:
sudo apt install protobuf-compiler
和
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
有一个文件夹 /home/deckard/go/src/github.com/golang/protobuf
和 /home/deckard/go/src/google.golang.org/protobuf
以及 /home/deckard/go/src/google.golang.org/protobuf
,我猜,里面有我需要的一切。
我的 bashrc 配置(尝试了几种方法,所以事情相互重叠):
export GOROOT=/usr/lib/go-1.13
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT:$GOPATH:$GOBIN
export PATH=$PATH:$GOPATH/bin
export GO_PATH=~/go
export PATH=$PATH:/$GO_PATH/bin
所以我从这里尝试了解决方案:,但其中 none 帮助了我。任何线索都会有所帮助,因为我卡住了并且很累。
更新:ls -l /home/deckard/go/bin/protoc-gen-go-grpc
显示 rwxrwxr-x 1 deckard deckard 7970222 мая 1 14:55 /home/deckard/go/bin/protoc-gen-go-grpc
,printenv PATH
returns /home/deckard/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/deckard/.dotnet/tools:/usr/lib/go-1.13:/home/deckard/go:/home/deckard/go/bin:/home/deckard/go/bin://home/deckard/go/bin
更新:which protoc
returns /usr/bin/protoc
(试图将其从预编译的二进制文件安装到 /home/deckard/.local/bin/protoc
,没有帮助)。在这两种情况下 protoc-gen-go-grpc --version
returns protoc-gen-go-grpc 1.1.0
。我还尝试将所有内容从 google.golang.org/protobuf 复制到 google.golang.org/protobuf,没有结果。
所以我删除了 github.com/golang/protobuf
文件夹,似乎 google.golang.org/protobuf
已经开始编制索引,一切都刚刚开始工作。
我正在尝试从这个项目 https://github.com/penthaapatel/grpcblog 运行 makefile 命令 'gen'。命令是:protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative blog/blog.proto
但是我得到一个错误:
protoc-gen-go-grpc: program not found or is not executable
--go-grpc_out: protoc-gen-go-grpc: Plugin failed with status code 1.
make: *** [/home/deckard/go/src/grpcblog/Makefile:2: gen] Error 1
我用的是Ubuntu20.04? Golang-1.13.8,$GOROOT=/usr/lib/go-1.13
和 $GOPATH=/home/deckard/go
($HOME 是 /home/deckard
)。协议是 libprotoc v.3.6.1.
。我安装了 protobuf-compiler:
sudo apt install protobuf-compiler
和
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
有一个文件夹 /home/deckard/go/src/github.com/golang/protobuf
和 /home/deckard/go/src/google.golang.org/protobuf
以及 /home/deckard/go/src/google.golang.org/protobuf
,我猜,里面有我需要的一切。
我的 bashrc 配置(尝试了几种方法,所以事情相互重叠):
export GOROOT=/usr/lib/go-1.13
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT:$GOPATH:$GOBIN
export PATH=$PATH:$GOPATH/bin
export GO_PATH=~/go
export PATH=$PATH:/$GO_PATH/bin
所以我从这里尝试了解决方案:
更新:ls -l /home/deckard/go/bin/protoc-gen-go-grpc
显示 rwxrwxr-x 1 deckard deckard 7970222 мая 1 14:55 /home/deckard/go/bin/protoc-gen-go-grpc
,printenv PATH
returns /home/deckard/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/deckard/.dotnet/tools:/usr/lib/go-1.13:/home/deckard/go:/home/deckard/go/bin:/home/deckard/go/bin://home/deckard/go/bin
更新:which protoc
returns /usr/bin/protoc
(试图将其从预编译的二进制文件安装到 /home/deckard/.local/bin/protoc
,没有帮助)。在这两种情况下 protoc-gen-go-grpc --version
returns protoc-gen-go-grpc 1.1.0
。我还尝试将所有内容从 google.golang.org/protobuf 复制到 google.golang.org/protobuf,没有结果。
所以我删除了 github.com/golang/protobuf
文件夹,似乎 google.golang.org/protobuf
已经开始编制索引,一切都刚刚开始工作。