昨日、Homebrewの拡張:brewdler, tap, cask という記事でbrewdlerを試したことを書きましたが、 どうもただリストを管理してるだけなうえ、 tapでインストールするパッケージはきちんとインストール出来ないし、 削除も対応してなかったりして利点が見いだせなかったので、 それらを出来るようにしたスクリプトを作りました。
Brewall
ファイルはGitHubにあります。
Brewallのインストール
brew-tapでインストール出来るようにしたので、 Homebrewがインストールされてれば
$ brew tap rcmdnk/brewall
$ brew install brewall
でインストール出来ます。
必要なファイルは/bin/brewall
だけなので、これを取ってきてパスが通った好きな所に入れてもOKです。
使い方
インプットファイル
管理はデフォルトでは/usr/local/Library/Brewfile
をインプットファイルとして使います。
最初に
$ brewall -i
とすると、現在インストールされているファイルからBrewfileを作ってくれます。 このファイルはBrewdlerでも使えますし、 Brewdler様に作ったBrewfileもそのまま流用できます。
Brewdler同様、tap
/cask
にも対応していて、こんな感じで
Brewfilwを作って下さい(既にHomebrewで何かインストールしてある場合は先
にbrewall -i
でファイルを作りそれを編集して下さい):
brew 'mercurial'
brew 'macvim --with-lua'
tap 'phinze/cask'
cask 'firefox'
最初にコマンド(brew
/tap
/cask
)、次にパッケージやインストール時のオプションです。
基本的2番目以降の項目はbrew install
等の引数に直接渡されるだけなので、
brew install
に使える引数は全て使えます。
なので、MacVimを+lua
でコンパイルしてインストールしたい場合は上の様に--with-lua
付きで。
brewall -i
でも、これらのオプション付きでインストールしたものはオプション付きで初期化します。
また、Brewdlerだとtap
で書いただけの場合、brew install
が行われないので
手作業が必要でしたが(上のファイルだとcask
がないと言って怒られる)、
Brewallはbrew install
もパッケージ名を探してきて自動的に一緒にbrew install
もされます。
追記: 2013/09/15
brew-tapに関して少し理解してなかった部分があって1レポジトリ1パッケージ(Formula) 限定にしてましたが、そうでもないので、 それに対応するようアップデート:Brewallにtapall追加。
これに伴いtap
だけの場合はtap
するだけ、tapall
コマンドを使うと
レポジトリ内の全てのFormulaeに従いパッケージをインストールする様になります。
(上で書かれてる様な自動インストールをしたい場合はtapall
を使う。)
追記ここまで
また、cask
コマンドがある場合、自動でtap 'phinze/cask'
と同じことをするようにしてあるので、
上の例ではphinze/cask
の項を落としてもOKです。
順番も、先にcask
の項目があっても、その時にcask
をインストールしてしまうので
問題ありません。
インストール
引数なしでbrewall
を行うと、Brewfile
にあるパッケージをインストールします。
MacVim等、アプリケーションを含むパッケージの場合、-l
を与えることで、
ローカルの~/Applications/
へ各アプリケションへのリンクを作ります(brew linkapps
)。
もし、グローバルな/Applications/
へインストールしたい場合は-g
を使います。
この場合はsudo
するのでrootパスワードを聞かれます。
クリーンアップ
brewall -c
とすると、Brewfile
に無い項目を削除します。
デフォルトではdry runモードで走るので実際には削除しません。
一度brewall -c
でチェックして、実際に削除したい場合は
$ brewall -c -r
と-r
を付けて下さい。
追記: 2013/11/25
現在のbrewall(v0.0.7以降)では、
レポジトリ情報用にこの-r
を使いたかったので、オプションの定義を変更して
-C
がこの実際に削除する時に使うオプションになっています。
追記ここまで
また、cask
コマンドがある場合、tap 'phinze/cask'
がなくてもこれを削除しません。
Brewfile編集
$ brewall -e
とするとBrewfileを編集できます。Editorはデフォルトではvim
ですが、
EDITOR
変数が設定してある場合はその値を使います。
まとめ
Homebrew等、基本Rubyで書かれてるのでRubyで作った方が喜ばれるところかもしれませんが、 RubyはOctopressで使うくらいでおぼつかない(じゃあなぜOctopressを使ったか。。。)ので、 簡単にシェルスクリプトで書きました。
Brewdlerで出来る事は網羅し、かつ、インストールは全自動化、 削除も簡単に行える様にできたので取り敢えず満足なところ。