🙆

grpc_cliをUbuntu 22.04に入れる際にハマった話

2023/05/31に公開

grpc_cliをLinux(Ubuntu 22.04)に入れる際にハマった話

こんにちは!情報科学専門学校のモノづくりサークル、MakeITのkentyです!
今回は、grpc_cliをUbuntu 22.04に入れる際にハマった超初歩的ですが大事なことについてお話しできればと思います!

背景

gRPCについて勉強しようといろいろな記事やらなんやらを見つつ、手を動かしながらできるいい教材的なものはないかと探していたところ、ちょうど技術書展14のほうで、スターティングgRPCというものを見つけ、こちらを進めておりました。

gRPCについて基礎的な知識から、実装までをカバーしており非常に助かりました!著者様ありがとうございます 🙇‍♂️

ただ、書籍での説明はMac OSを前提としており、当方はUbuntu 22.04を使用していたため、ある程度インストール方法での差異は出てくるかな、とは考えておりました。

最初に結論

gitにおいてsubmoduleを使うような場合は、

$ git clone <リポジトリURL> --recursive

もしくは、クローンする際に--recursiveを忘れたら

$ git submodule update --init --recursive

を使うようにしましょう!!

具体的に詰まった部分

Golangを用いてアプリケーションを実装し、gRPCサーバーを立てるところまで問題なかったのですが、いざクライアントツールとしてgrpc_cliをインストールしようとLinuxでのインストール方法を確認すると、公式md いわく、以下を行えばよい、というような形でした。

$ git clone git@github.com:grpc/grpc.git
$ cd grpc
$ git submodule update --init
$ mkdir -p cmake/build
$ cd cmake/build
$ cmake -DgRPC_BUILD_TESTS=ON ../..
$ make grpc_cli

しかし、実際には最後の最後のコマンドである

$ make grpc_cli

の部分で以下のようなエラーを出力されてしまいました。

これの原因になかなか気づくことができず、かなり時間を浪費してしまいました。

今回はたまたま、過去にsubmoduleも一緒にcloneしたことによって正常にbuildが通ったことがあったことを思い出し、--recursiveを用いてcloneする方法を試し、解決という形になりました。

もう一度、cloneの段階から--recursiveを行いやり直すと...

このように、ビルドが通りました!
(ログを確認しても、submodule化されているthird_partyあたりのものが使用されているのが見えますね)

もし、皆さんもgit cloneしたままの状態なのにbuildが通らない...ということがありましたら、submoduleも含めてcloneするようにしてみてください!

余談

途中、grpc_cliがあまりにも入らないので代わりとしてgrpcurlというのを使っていました。
正直こちらのほうが使い勝手がよさそうで、grpc_cliのインストールに苦労しましたが今後はgrpcurlの方を使っていくと思います(笑)

Discussion