コーヒー飲みながら仕事したい

仕事で使う技術的なことの備忘録とか

Protobuf を Docker 上の Ubuntu 環境でインストールする

あらすじ

前回の続き

tassi-yuzukko.hatenablog.com

今までの流れの概略

  • protobuf-c をコンパイルしようと思ったら Windows 上ではうまくいかなかった
  • Ubuntu 環境だったらうまくいくのではと思い、 Docker (Docker ToolBox)を導入してみた
  • Ubuntu のイメージを、 protobuf-c コンパイル用にカスタマイズするために Dockerfile を用意した
  • →protobuf-c をコンパイルするために、本家 Protobuf が必要なのだが、 Ubuntu 用のパッケージはバージョンが古い(protobuf ver2.6.1)。protobuf-c ver1.30 に互換性問題があり、 protobuf ver3.X 以降でないと、 protobuf-c をコンパイルできない
  • →protobuf ver3.X(最新版)を自分でコンパイル/インストールする

今回の目標

ということで、今回は本家 protobuf ver3.X をインストールする

protobuf をインストールするまでの手順

基本的には以下の Readme に従う。

github.com

git hub からリポジトリをクローンする

git hub のリポジトリからクローンする。

root@e834aae66aee:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  work
root@e834aae66aee:/# cd work
root@e834aae66aee:/work# git clone https://github.com/google/protobuf.git
Cloning into 'protobuf'...
remote: Counting objects: 50405, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 50405 (delta 5), reused 6 (delta 3), pack-reused 50392
Receiving objects: 100% (50405/50405), 44.17 MiB | 126.00 KiB/s, done.
Resolving deltas: 100% (33940/33940), done.
Checking connectivity... done.
Checking out files: 100% (1952/1952), done.

補足

一応、データ永続化用の共有フォルダにクローンすると、Windows であれば tortoise git とかの GUIで git 操作でき、ubuntuwindows のいいとこどりができる。
ちなみに、こういう永続化領域を Data Volume というらしい。

コンフィグスクリプトを生成する

クローンしたら、 ./autogen.sh を実行しなければいけないらしい。

root@e834aae66aee:/work# cd protobuf
root@e834aae66aee:/work/protobuf# ./autogen.sh

補足

Readme に You can skip this step if you are using a release package (which already contains gmock and the configure script). とあるので、もしかしたらコンパイルするだけなら上記コンフィグスクリプトは不要かもしれない。

コンパイルとインストール

Readmeによると、以下を実行するとのこと。

$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig

Readmeには、環境によっては追加でいろいろやらないとコンパイルが通らないことがあるとのことだけど、私の環境では上記コンパイル/インストールが成功したっぽい。

補足

make と make check は激遅です。無限ループしてるんじゃないかってくらい、同じようなビルドログが出力され続けて終わりません。私の環境でそれぞれ20分以上かかりました。

インストール確認

protoc --version が正常にできればとりあえずインストールはOKと思われる。

root@e834aae66aee:/work/protobuf# protoc --version
libprotoc 3.5.1

とりあえず protobuf のインストールまでできた。
次回は protobuf-c のインストールについてまとめる。


別のインストール方法

githububuntu で protobuf ver3.X をインストールすることを題材として issue を見つけた。

gist.github.com

これによると、 https://github.com/google/protobuf/releases/download/v3.4.0/protoc-3.4.0-linux-x86_64.zip でも入手してインストールできるみたい。
一応備忘録として残しておく。