【Ubuntu (22.04)/protoc】aptで入手できないprotocの最新版をインストールする方法
はじめに
Protocol Buffersは何もわからないですが、とあるビルド環境を構築するためにprotoc (Protocol Buffer Compiler) の3.15以上のバージョンが必要になりました。
現在、aptでインストールできるバージョンは3.12です。
$ sudo apt install protobuf-compiler
$ protoc --version
libprotoc 3.12.4
aptを使わず最新版をインストールする手順は、makeする方法と、ZIPファイルを持ってくる方法の主に2パターンあるようです。
makeは時間がかかりそうなため、今回はZIPでお手軽にインストールする手順について書き残しておきます。
インストール手順
1. (既にaptでインストールしている場合)protobuf-compilerを削除
sudo apt purge protobuf-compiler
2. インストールするバージョン番号を取得
目視で公式のreleasesページ(https://github.com/protocolbuffers/protobuf/releases)から確認しても良い。
最新のバージョン番号をコマンドで入手するなら↓
PROTOC_VERSION=$(curl -s "https://api.github.com/repos/protocolbuffers/protobuf/releases/latest" | grep -Po '"tag_name": "v\K[0-9.]+')
3. ZIPファイルをダウンロード
curl -Lo protoc.zip "https://github.com/protocolbuffers/protobuf/releases/latest/download/protoc-${PROTOC_VERSION}-linux-x86_64.zip"
4. ZIPファイルを解凍して配置
unzipコマンドがインストールされていない場合はインストールする。
sudo apt install unzip
ZIPファイル内には、readme、実行するバイナリファイル、Googleが定義済みでimportして使用できるようになっているファイル群がある。
バイナリファイルとimportファイル群をまとめてパスが通っている箇所に配置する場合は、
sudo unzip -q protoc.zip bin/protoc 'include/*' -d /usr/local
コマンド実行さえできれば良い場合は、
sudo unzip -q protoc.zip bin/protoc -d /usr/local/
を実行する。
(私の場合は、最初はimportファイル群の存在を知らないまま、参考記事を見てバイナリファイルのみを解凍・配置しており、ビルドがうまくいかなかったという経緯があります。)
readme.txtは好きな場所に展開する。
unzip -q protoc.zip readme.txt -d ~/
5. 配置したバイナリファイルに実行権限を付与
sudo chmod a+x /usr/local/bin/protoc
6. 確認と後始末
1回既にaptでインストールしている場合は、コマンドの参照がうまくいかない(古いパスを参照してしまう)かもしれませんが、私は一旦exitして入り直したらうまくいきました。
protoc --version
執筆時点では、最新版である「libprotoc 23.4」が出力され、無事に最新版がインストールされていることを確認できました。
最後に、ZIPファイルは削除しておきます。
rm -rf protoc.zip
確認した環境
NAME="Ubuntu"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
参考
Install protoc on Ubuntu 22.04 | Lindevs
Ubuntu 20.04 に最新のprotobufを入れてprotocでGoのコードを生成するまで - Qiita
Discussion