2014/08/04 追記: brew bundle は非推奨になりました。下のほうに「辛み」について書いていますがそのあたりの問題です。シェルスクリプトで set -e すれば代わりになるでしょう。
ついさっき @deeeet さんが書いていた BrewfileでHomebrewパッケージを管理する の記事が twitter のタイムラインに流れて来たのを見つけたので、これは良いかも!と思って自分もやってみたメモ。
まずは @deeeet さんの記事をみたほうが良いのだけど、例えばこんなかんじの Brewfile というものを用意して、その Brewfile のあるディレクトリで
とすると Brewfile に記述しておいた homebrew パッケージをまとめてインストールできるというもの。
で、知らなかったのだけど、さらに homebrew-cask というものを使う事で、 homebrew 本体では管理されていないような dmg なアプリケーションのインストールもできるという便利情報ありがたい。
で、ちょっと調べてみた
1. brewdler ってあった気がするんだけど brew bundle ってデフォ?
brewdler のページに
Note: this is now a native feature in homebrew:
って書いてあった。デフォだった。すごい、よし使おう。
2. brew tap foo/bar 2回目がエラーになって失敗する
Brewfile に
と書いておくと、brew bundle 2回目の実行で必ず
Error: Already Tapped!
と表示されて失敗し、処理が止まってしまう。どう回避するのが正しいのかよくわからないので、とりあえず
としたら誤摩化せたのでそうしてみた。#けど良いのかコレ(´・ω・`)
ちなみに、
とかだと
Warning: zsh-5.0.4 already installed
のように Warning なので処理は続行される。brew tap も Error じゃなくて Warning にするべきなのでは??
(追記) Issue あげたら賛同してくれる人もいたのでプルリク送りました => Warning にする変更が master にはいりました :D
- [Request] Want `brew tap` raises `Warning` rather than `Error` if already tapped
- [Propose] Change 'Error: Already tapped' to 'Warning: Already tapped'
3. 使いたいアプリの cask がない場合はどうすれば?
phinze/homebrew-cask の Casks ディレクトリにないアプリをインストールしたい場合はどれすれば良いのだろう?と思って調べてみた。
ryurock さんが Qiita に書いてた みんなhomebrew-caskって知ってるか? の 記事にヒントが書いてあったのだけど、どうやら自分で homebrew フォーミュラのレポジトリを用意すれば良いっぽい。 ryurock さんの記事だと、homebrew-cask を fork していじろう、と書いてあったけど、自分専用の homebrew-mycask とかにしたほうが良いと思ったので、そうしてみた。
https://github.com/sonots/homebrew-mycask
Casks ディレクトリを作って他のを真似して試しに echofon.rb を書いてみた。こんなかんじ。
ちなみに sha1 は
とかやれば取得できる。これで、
でインストールできるようになったので、Brewfile に
と書いて完成。
なお、homebrew フォーミュラのレポジトリ書いたことがなかったけれど homebrew-フォーミュラレポジトリ名
というレポジトリ名にして github に作っておくと、brew tap ユーザ名/フォーミュラレポジトリ名
で tap できるようになるっぽい。
(追記) 4. brew install foo で古いバージョンが入っている場合エラーになって失敗する
Brewfile に
と書いていて、最新が 5.0.4 だけれどもすでに古いバージョンが入っているような場合
Error: zsh-5.0.0 already installed
To install this version, first `brew unlink zsh'
のように Error となり、処理が止まってしまう。最新 5.0.4 が入っている場合は、
Warning: zsh-5.0.4 already installed
のように Warning レベルなので問題ない。
またか。。。腐ってるな。。。と思ってプルリク を送ったけれども、下位互換性を変えたくないと言われてしまったので、今のところは
のようにする感じです。うぅ辛い T T