Homebrew-versionsで特定バージョン指定してインストールする

最新版ではないバージョンのパッケージをインストールする時に使うhomebrewのversionsコマンド(brew-versions)がアンサポートになり、コマンドが削除されるようなのでHomebrew-versionsを使ってみました。

おさらい

今まではHomebrewで最新版ではないバージョンでインストールするには、brewのversionsコマンドで過去バージョンの情報を調べてgit checkoutし直すと言う手順でした。

下記はmaven 3.0.5をインストールする例です。

$ brew versions maven
3.1.1    git checkout a0c47cd Library/Formula/maven.rb
3.1.0    git checkout f160fa9 Library/Formula/maven.rb
3.0.5    git checkout b4725ca Library/Formula/maven.rb
3.0.4    git checkout d7a19f2 Library/Formula/maven.rb
$ cd /usr/local
$ git checkout b4725ca Library/Formula/maven.rb
$ brew upgrade maven

この方法だとbrew updateをした時にリポジトリのバージョン情報に整合性がとれなくなりエラーが出てしまいます。

$ brew update
error: Your local changes to the following files would be overwritten by merge:
       Library/Formula/maven.rb
Please, commit your changes or stash them before you can merge.
Aborting
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master

そのためいちいちgit checkoutし直したりしなければいけないのが不便でした。

Homebrew-versions

Homebrew-versionsは複数のバージョンを別々のformulaeとして提供するリポジトリです。
公式のリポジトリですが手動で加える必要があります。

$ brew tap homebrew/versions
$ brew install <formula>

あるいはリポジトリを足さずに個別にバージョン指定して入れることもできます。

$ brew homebrew/versions/<formula>

下記はmaven 3.0系の最新版(3.0.5)をインストールする例です。
パッケージ検索するとmaven2とmaven30が増えています。maven2系とmaven3.0系のformulaです。

$ brew search maven
maven        maven-shell  maven2       maven30
$ brew intall maven30

これで手軽に最新版ではないバージョンのパッケージをインストールすることができます。

パッケージがコンフリクトを起こすことがあるのでHomebrew-versionsを使い始める前にversionsコマンドを利用して入れたパッケージはアンインストールして入れ直すほうが無難です。

コメントを残す

メールアドレスが公開されることはありません。