概要
新しいMacBookを使い始めたところ以前利用していた古いバージョンのツールを使う必要が出てきたのですが、意外と手間だったので忘れないようにまとめ。
環境
- OSX El Capitan 10.11.6
- Homebrew 1.1.6
旧バージョンをインストールしたことがある場合
brew switch
で古いバージョンに変更できます。どんなバージョンがインストール済みかはbrew info
で確認できます。
$ brew info terraform terraform: stable 0.8.2 (bottled), HEAD Tool to build, change, and version infrastructure https://www.terraform.io/ /usr/local/Cellar/terraform/0.7.2 (3 files, 121.5M) Poured from bottle on 2016-09-05 at 21:50:16 /usr/local/Cellar/terraform/0.7.3 (3 files, 122.4M) Poured from bottle on 2016-09-08 at 01:50:24 /usr/local/Cellar/terraform/0.7.4 (3 files, 123.6M) Poured from bottle on 2016-09-22 at 09:43:38 /usr/local/Cellar/terraform/0.7.5 (4 files, 123.3M) Poured from bottle on 2016-10-10 at 10:49:37 /usr/local/Cellar/terraform/0.7.6 (4 files, 76.3M) Poured from bottle on 2016-10-18 at 00:01:42 /usr/local/Cellar/terraform/0.7.7 (4 files, 76.3M) Poured from bottle on 2016-10-23 at 21:51:09 /usr/local/Cellar/terraform/0.7.8 (4 files, 78.5M) Poured from bottle on 2016-11-02 at 21:32:15 /usr/local/Cellar/terraform/0.7.9 (4 files, 78.7M) Poured from bottle on 2016-11-09 at 22:16:13 /usr/local/Cellar/terraform/0.7.10 (4 files, 78.9M) Poured from bottle on 2016-11-14 at 23:13:43 /usr/local/Cellar/terraform/0.7.13 (4 files, 87M) Poured from bottle on 2016-11-29 at 21:54:18 /usr/local/Cellar/terraform/0.8.0 (4 files, 95.5M) Poured from bottle on 2016-12-15 at 23:40:08 /usr/local/Cellar/terraform/0.8.1 (4 files, 95.5M) Poured from bottle on 2016-12-17 at 10:01:35 /usr/local/Cellar/terraform/0.8.2 (4 files, 96.8M) * Poured from bottle on 2016-12-22 at 21:49:28
こんな感じに一覧が表示されるので、変更したいバージョンを指定します。
$ brew switch terraform 0.8.1
確認します。
$ terraform version Terraform v0.8.1
大丈夫ですね。
インストールしたことがない場合
大きな流れは以下です。
- 古いバージョンのコミットを見つける
- リポジトリ
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/
をそのコミットに戻す - インストール
- リポジトリを元の最新の状態に戻す
brew logでコミットを確認
まずはbrew log
でインストールしたいバージョンのコミットをチェックアウトできるか確認します。
$ brew log glide --oneline 8d66a976d5 glide: update 0.12.3 bottle. b2d1084634 glide 0.12.3 44aa87e98c glide: update 0.12.2 bottle. ec3ae89f7f glide: improve coding style of test (#4784) abc6d3df62 glide: update 0.12.2 bottle. 2095df5eae glide 0.12.2 e5743660d4 glide: update 0.12.1 bottle. ffdcb0fd8a glide: update 0.12.1 bottle. d4682203f4 glide 0.12.1 74f6893fc8 glide: update 0.12.0 bottle. f48f224fcd glide 0.12.0
Homebrewは標準ではshallow cloneされていてgitの履歴が少ないです。今回欲しいのは0.11.x
だったので、ありませんでした。
古いコミットをfetch
$ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/
全コミットを取得します。
$ git fetch --unshallow
非常に大きいので結構時間がかかりますが気長に待ちます。
fetchできたらコミットを確認します。
$ brew log glide --oneline | grep 0.11 794969f1c4 glide: update 0.11.1_1 bottle. e1be650a33 glide: update 0.11.1 bottle. a500ad1cb4 glide 0.11.1 797f0278cc glide: update 0.11.0 bottle. 506b556f27 glide 0.11.0
0.11.xのものであれば良かったので、一番上(一番新しい)の794969f1c4
を使います。
チェックアウト
リポジトリを古いバージョンの頃に戻します。全部戻すのは無駄なので、glide.rb
のみを戻します。
$ git checkout 794969f1c4 glide.rb
現バージョンのアンインストール
新しいバージョンを保持しているとインストールできないのでアンインストール。
$ brew uninstall glide
今使っているものだけアンインストールすればよいです。brew unlink
でもいいかもです。
インストール
$ brew install glide
確認します。
$ glide --version glide version 0.11.1
インストールできました。
リポジトリを元に戻す
リポジトリが古い状態になってしまっているので、戻します。
$ git reset HEAD $ git checkout .
unshallowでfull cloneしたことでbrewのgitが重くなるかも…と不安な方は以下の方法でlogを減らせます。
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
で
$ git fetch --depth=1 $ git gc $ git prune
お疲れ様でした。