はじめに
Homebrew
を使ってインストールしたパッケージで、旧バージョンのパッケージを利用したい場合に少々面倒だったのでメモを残します。
前提
Homebrewのバージョン1.0.0
で、インストール先やディレクトリ構成が変わりました。
以前の構成での旧バージョンのインストールについて書かれている記事はありますが、大変参考にさせてもらいつつ現在のバージョンにあった形で書かせていただきました。
この記事はHomebrew
のバージョン1.1.0
の時点で書かれています。(※1.3.1
でも確認&更新済)
また、古いprotobuf
のインストールを行うことを目的にしています。
ローカルに旧バージョンがある場合
brew info
で確認できます。
$ brew info protobuf
protobuf: stable 3.1.0 (bottled), HEAD
Protocol buffers (Google's data interchange format)
https://github.com/google/protobuf/
/usr/local/Cellar/protobuf/3.0.2 (250 files, 15.8M)
Poured from bottle on 2016-11-16 at 21:33:15
/usr/local/Cellar/protobuf/3.1.0 (253 files, 16M) *
Poured from bottle on 2016-11-16 at 21:32:14
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/protobuf.rb
==> Dependencies
Build: autoconf ✔, automake ✔, libtool ✔
==> Options
--c++11
Build using C++11 mode
--universal
Build a universal binary
--with-test
Run build-time check
--without-python
Build without python support
--HEAD
Install HEAD version
==> Caveats
Editor support and examples have been installed to:
/usr/local/Cellar/protobuf/3.1.0/share/doc/protobuf
*
印のものが現在利用しているバージョンです。
brew switch
でバージョンの切り替えが可能です。
$ brew switch protobuf 3.0.2
Cleaning /usr/local/Cellar/protobuf/3.0.2
Cleaning /usr/local/Cellar/protobuf/3.1.0
15 links created for /usr/local/Cellar/protobuf/3.0.2
ローカルに旧バージョンがない場合
Formula
のバージョンを遡ってインストールします。
まずhomebrew-core/Formula
に移動します。
$ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
コミットログを確認します。
$ git log protobuf.rb
目的のバージョンのコミットを探します。例えばprotobuf
の2.6.1
をインストールしたい場合。
commit a7df562c5f84dc26218055fc5a7bbcc839c17319
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date: Sun Apr 17 13:40:27 2016 +0100
protobuf: update 2.6.1 bottle.
上記のログがそれっぽいので、チェックアウトします。
$ git checkout a7df562c5f84dc26218055fc5a7bbcc839c17319 protobuf.rb
インストールの前に、現在のパッケージをunlink
しておきます。
$ brew unlink protobuf
Unlinking /usr/local/Cellar/protobuf/3.0.2... 15 symlinks removed
パッケージをinstall
します。
HOMEBREW_NO_AUTO_UPDATE
に1
を設定しないと、勝手にhomebrew
がアップデートしてしまって古いバージョンのパッケージをインストールすることができません。詳しくはこちら。
$ HOMEBREW_NO_AUTO_UPDATE=1 brew install protobuf
==> Downloading https://homebrew.bintray.com/bottles/protobuf-2.6.1.el_capitan.bottle.5.tar.gz
######################################################################## 100.0%
==> Pouring protobuf-2.6.1.el_capitan.bottle.5.tar.gz
==> Caveats
Editor support and examples have been installed to:
/usr/local/Cellar/protobuf/2.6.1/share/doc/protobuf
==> Summary
🍺 /usr/local/Cellar/protobuf/2.6.1: 121 files, 6.8M
うまく行ったらバージョンを確認。
$ protoc --version
libprotoc 2.6.1
Formula
のバージョンはもとに戻しておきます。
$ git reset --hard
HEAD is now at af33827 mlt: update 6.4.1 bottle.
バージョンを戻したい場合はbrew switch
を使います。
$ brew switch protobuf 3.1.0
Cleaning /usr/local/Cellar/protobuf/2.6.1
Cleaning /usr/local/Cellar/protobuf/3.0.2
Cleaning /usr/local/Cellar/protobuf/3.1.0
15 links created for /usr/local/Cellar/protobuf/3.1.0