🆕

【Ubuntu (22.04)/protoc】aptで入手できないprotocの最新版をインストールする方法

2023/07/08に公開

はじめに

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