homebrewでバージョンを固定してインストールしたい
June 19, 2014
homebrewがバージョン指定してインストールできないので
packageを作成してインストールする方法を記載します。
バージョン指定してインストールできるようにするissueとかp-rあるだろう
と思って探してみたんですが見つからなかった。探し方が悪いかもしれない。
TL;DR
Brewfile
などでバージョン指定してインストールできないので
自分で利用したいバージョンのpackageを作成してそれをインストールする
Ref
brew tap - Homebrew/homebrew
Formula Cookbook - Homebrew/homebrew
HomeBrewで自作ツールを配布する - SOTA
Homebrew vs Boxen を比較して、brewproj に着手 - ja.ngs.io
How To
例えばnginxの1.2.8のバージョンを静的に指定してインストールしたい場合
- GitHubの自分の利用したいアカウントにて、
homebrew-foo
というリポジトリを作成する。 brew versions nginx
を実行してgitのハッシュを取得する/usr/local/Library/
配下にて_2._で取得したハッシュをcheckout/usr/local/Library/Formula/nginx.rb
をhomebrew-foo/nginx128.rb
という名前で保存nginx128.rb
before
class Nginx < Formula
after
class Nginx128 < Formula
上記のようにclass名を変更
nginx128.rb
をcommitしてpushbrew tap username/foo
のコマンドを発行してnginx128.rb
を取得brew search nginx
のコマンドを発行して
nginx nginx128
と出れくれば成功。
brew install nginx128
のコマンドを発行してインストール- nginx -v でバージョンを確認
(/etc/pathsで/usr/bin/より先に/usr/local/bin/を見に行くようにしておく)
上記流れで、自前のtapリポジトリを作成し、
そこに必要な分の静的なバージョンを指定したソフトウェアの設定を格納することで
バージョン指定がバリバリの環境も無難に構築することが可能になります。
ちなみに既存のhomebrewでインストールしたnginxを上書きしたくない場合は
nginx128.rb
の中身をよしなに変更することで可能です。
brewでバージョン固定したソフトウェアを配布しまくる雑なノウハウが溜まっていく
— kenjiskywalker (@kenjiskywalker) June 19, 2014
@kenjiskywalker うちは redis24.rb で class Redis24 とか雑に変えて独自の tap リポジトリにつっこんでますよ
— そらは (@sora_h) June 19, 2014
@kenjiskywalker 仲間!
— そらは (@sora_h) June 19, 2014
こちらからは以上です。