BoxenのHomebrewで過去バージョンをインストールしようとして挫折
懲りずにBoxen弄ってます。
今回は、CarbonEmacs用にMagitの古いバージョンを使っているので、それをBoxenでインストールできないか試して挫折した記録です。
CarbonEmacsとMagitと私
私は普段Mac上でCarbonEmacsを使ってプログラミングやら文章書きなどしています。
最近ようやくバージョン管理にGitを使うようになってきたので、EmacsのGitクライアントであるMagitを合わせて使うようになりました。
ところが最新のMagitは、これまた最新24系もしくは23系がターゲットになっているようで、22系のCarbonEmacsではうまく動きませんでした。
さっさとEmacsを24系に移行すれば良いのですが、そうなると現状導入している他のlispなども含めて再設定が必要になりそうなので、先延ばししている状況です。
そのためMagitのバージョンを遡りながら試して、最低限動いた1.0.0を使っていました。
Boxenと合わせて使うようになったHomebrewのパッケージにMagitを発見したので、それであればBoxen使ってインストールしたいということで試してみました。
Homebrewで古いバージョンのパッケージをインストールする
ところで、Homebrewというパッケージ管理システムがあるので、古いバージョンをインストールすること自体は簡単だと思っていたのですが、若干面倒くさいですね。
$ brew version <package>
で存在するバージョンを確認する- バージョンと合わせて出力される
git checkout
を実行して、対応するバージョンのFormulaを入手する - その状態で
$ brew install <package>
する
というような手順になると。
バージョン指定して一発!とかでないのがチョット残念。
参考:homebrew で旧バージョンのものを使いたい - @Konboi memo
BoxenのHomebrewモジュール
次に、Boxen上で古いバージョンのHomebrewパッケージをインストールする方法がないか、boxen/puppet-homebrew のREADMEを見てみました。
すると、homebrew::formula
という記法で、独自のFormula(*.rb)を読みこませられるような気がしたので、さっそく試してみることにしました。
まずは、存在するMagitの過去バージョンを確認。
$ brew versions magit Warning: brew-versions is unsupported and may be removed soon. Please use the homebrew-versions tap instead: https://github.com/Homebrew/homebrew-versions 1.2.0 git checkout 689733e /opt/boxen/homebrew/Library/Formula/magit.rb 1.0.0 git checkout 3c5ca25 /opt/boxen/homebrew/Library/Formula/magit.rb 0.8.2 git checkout 0476235 /opt/boxen/homebrew/Library/Formula/magit.rb 0.8.1 git checkout a385f9e /opt/boxen/homebrew/Library/Formula/magit.rb
1.0.0をcheckout。
$ git checkout 3c5ca25 /opt/boxen/homebrew/Library/Formula/magit.rb
checkoutしたものを、Boxen環境にコピーしておきます。
$ cp /opt/boxen/homebrew/Library/Formula/magit.rb /opt/boxen/repo/modules/magit/brews/magit.rb
先のpuppet-homebrewのREADMEを参考に、個人用.ppにMagit用の設定を追記。
class magit { homebrew::formula { 'magit': ; } package { 'boxen/brews/magit': ensure => 'aversion' ; } } include magit
そして実行。
$ script/boxen Error: /Stage[main]/People::Umi_uyura::Magit/Homebrew::Formula[magit]/File[/opt/boxen/homebrew/Library/Taps/boxen-brews/magit.rb]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///modules/magit/brews/magit.rb
動きませんでした。
良く見ると、/opt/boxen/homebrew/Library/Taps/boxen-brews/magit.rb
というファイルを探しているようですが、これは存在していません。
そういえば、READMEの中にhomebrew::tap { 'homebrew/versions': }
という記述もありました。
さらに、最初に古いバージョンの確認をした時、$ brew versions
は古いから、homebrew-versions
をtap
してくれというwarningも出てましたので、どうやらpuppet-homebrewもhomebrew-versionsを使う前提っぽいですね。
そして断念
で、この後homebrew-versions
をtap
して、さらにREADME同様のhomebrew::tap { 'homebrew/versions': }
を指定してみたのですが、うまくいきませんでした。
というのも、恐らくhomebrew-versionsnで過去のバージョンを扱うには、Homebrew/homebrew-versionsのリポジトリに該当するプログラムのFormulaが必要なのだと思われるのですが、肝心のMagitのFormulaが見当たらなかったので、そう判断しました。
Boxen初心者かつHomebrew初心者には、これ以上深追いするとハマりそうだったのと、まずはMagitがEmacsで使える環境が欲しかったので、今回も諦めることにしました。
というわけで、おとなしくcheckoutしていたFormulaから過去バージョンをインストールしました。
$ brew info magit magit: stable 1.0.0, HEAD https://github.com/magit/magit Not installed From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/magit.rb $ brew install magit => Downloading https://github.com/downloads/magit/magit/magit-1.0.0.tar.gz ######################################################################## 100.0% ==> make install DESTDIR=/opt/boxen/homebrew/Cellar/magit/1.0.0 PREFIX= 🍺 /opt/boxen/homebrew/Cellar/magit/1.0.0: 11 files, 436K, built in 6 seconds
もう少しHomebrewやversionsの仕組みが理解できたら取り組んでみようかと思います。
いや、それよりEmacsのバージョンを上げる方が良いのか・・・