Macでのパッケージ管理はHomebrewで行うようにしてますが、 brewdlerというものがあって、 より簡単に管理できそうだ、と言うことでちょっと試してみました。 ついでに、brewdlerのREADMEで始めてHomebrewにtapというコマンドがあることや Homebrew-caskという拡張があることも知ったのでその辺について。
追記: 2013/09/13
Brewall というHomebrewのパッケージたちをを管理するスクリプトを書いてみました。 Brewdlerでの使い勝手に加え、Brewderでいまいちだったところを改善してあります。 簡単なシェルスクリプトです。
追記ここまで
brewdler
brewdlerは、 BundlerでRubyのプロジェクトを管理する感覚で、 Homebrewで管理されるパッケージも管理しよう、という向きの管理パッケージです 1。 現状は、インストールするパッケージリストの記述しておいて他のマシンに移った時でも 簡単にまとめてインストール出来るようにする、と言った感じです。 アップグレード等はbrewコマンド自体で管理。
インストールは簡単でRubyGemsがインストールしてあれば 2
$ gem install brewdler
でOK。
使い方も簡単で、Gemfileの様なBrewfile
と言う名前のファイルを作り、その中に、
brew 'vim'
と言った感じで記述しておくと、Brewfile
のあるディレクトリで
$ brewdle
とするだけで記述されているパッケージをまとめてインストールしてくれます。
現状Homebrewでインストールするvimは-lua
な状態ですが、+lua
にしたければ
brew 'vim --with-lua'
の様に、brewで使えるオプションをそのまま書いておけばそのオプション付きでインストールされます。
(基本的には第一引数のコマンド
+install
+第二引数
の様な感じをしているみたい。)
これだけだとはっきり言って単にシェルスクリプトで回せば良いのでは。。。 という疑問があって、あまりメリットを感じてないので実はbrewdler自体は使わないでいいかな、 と思ってたりするんですが、 brewderのREADMEで、 Homebrew brew-tapと Homebrew-caskも使えるとの 記述があって、それらも初めて知ったのでちょっと試してみました。
brew tap
brew tapは Homebrewに実装されてるコマンドで、GitHubのレポジトリにある パッケージをそのままインストールするコマンドです。 最近のHomebrewがインストールされてればそのまま使えます。
使い方はbrew
の後にtap
コマンドを入れて、後はレポジトリ名。
次に使うcaskなんかだと、
$ brew tap phinze/homebrew-cask
$ brew install brew-cask
こんな感じで。
まずtap
コマンドでHomebrewに必要なファイルを取ってきて
3、
そのファイルに従いインストール出来るようにします。
(brew-cask
の名前はHomebrew-cask
にあるbrew-cask.rb
の名前)
その後、他のパッケージ同様、brew install
コマンドでインストール出来るようになります。
tapするときにレポジトリ名のhomebrew-
の部分は省略してphinze/cask
でも通ります。
逆に、tapで管理したいレポジトリを作りたい時は必ずhomebrew-
を付ける必要があり、
また、この部分以外に-
を付けるのは禁止だそうです
4。
(`/usr/local/Library/Taps/`以下にまずレポジトリごと取ってきてその中にある
`brew-cask.rb`等を参照してるみたいで、かつ、`install`時には新たに
GitHubから直接ファイルをとて来てるので、`Tap`ディレクトリにあるものが
ただただムダに思えるんですが。。。
設定ファイル用のレポジトリと実体用のレポジトリを分けて、
設定ファイルでそのレポジトリを指定すれば良いのかもしれませんが、
いずれにしろなんか無駄な感じが。。。
caskだけ見てたのでよく分かってなかったですが、
本来、Formulaを集めたリポジトリがあって、それをTapすることで
新たにインストールできるパッケージを増やす、と言うのが
Tapの使い方みたいですね。caskみたいな場合は、
自分自身でFormulaも用意してる、と。そうすると、取り敢えず
brewdlerで管理するときもTapするものはTapだけで、必要なパッケージだけ
brew installするのが正しい感じ。)
アンインストールする時はまず通常通り、
$ brew uninstall brew-cask
でbrew内でアンインストールし、
$ brew untap phinze/homebrew-cask
でアンタップ(Tap
ディレクトリから削除)。
これをbrewdlerで管理したい場合は
tap 'phinze/homebrew-cask'
brew 'brew-cask'
の様に、tap
とbrew
のコマンドを順に書きます。
tap
の方は第一項をtap
にして第二項をレポジトリ名に。
brewderのREADMEだと、
caskがtap
だけ書かれてますが、
これだとtap
するだけでインストールしてくれません。
なので、必ずインストールするためにbrew
の項を下に書く必要があります。
brew cask
Homebrew-caskは
Homebrewの拡張でWebから落としてきてインストールする様なソフトを
自動でインストールしてくれます。
cask自体のインストールは上でやったようにbrew tap
で。
インストールできるソフトは現在デフォルトではこんな感じ: brew-cask-search.txt。
インストールは
$ brew cask install firefox
こんな感じで。
実体は/opt/homebrew-cask/Caskroom
にインストールされ、そこから
デフォルトだと、~/Applications/
へリンクが貼られます。
(最初にhomebrew-cask
ディレクトリがない場合はディレクトリを作るためにroot権限が求められます。)
インストール先を変えたい場合は環境変数HOMEBREW_CASK_OPTS
を
$ export HOMEBREW_CASK_OPTS="--appdir=/Applications"
と設定すると/Applications
にインストールする様になります。
brew cask install
コマンド時に直接--appdir=/Applications
を加えてもOK
5。
アンインストールは
$ brew cask uninstall firefox
で~/Applications/
のリンクも.../Caskroom/
の実体も削除。
デフォルトのfirefoxは英語版ですが、日本語版をインストールしたい場合は
$ brew cask edit firefox
とすると設定ファイルが開けるので、その中で
- url 'https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US'
+ url 'https://download.mozilla.org/?product=firefox-latest&os=osx&lang=ja-JP-mac'
の様に、url
の部分でlang
をen-US
からja-JP-mac
に変更します。
ここで注意が必要なのが、一回cask install
すると、
/Library/Caches/Homebrew/
にfirefox-latest
のキャシュが残ってて、
これを使ってしまうので、再度違う言語でインストールしたい場合には
このファイルを先に消しておく必要があります。
(caskでダウンロードされたキャッシュはbrew cleanup
等で消えないので、
手で消すしか無い?)
これをbrewdleで管理したい場合はBrewfileに
cask 'firefox'
と書いてbrewdle
すれば良いだけです。
ただ、brewdleのREADMEにあるように
いきなりtap
でのcask
のインストールとcask
でのインストールを
tap 'phinze/cask'
cask 'firefox'
こんな感じで書いてもおいても、caskは無いと言われてしまいます。
なので、これらがインストールされてない状態からBrewfileを作る時は、
- tap ‘phinze/homebrew-cask’
- brew ‘brew-cask’
- cask ‘firefox’
の様にまず、caskをtap
、caskをインストール、
その後にcask
でインストールするもの、のように書いていく必要があります。
まとめ
brewdlerが便利そうだな、と思って使ってみたんですが、いまいち単なる リストと違って何が嬉しいのかわからないのが現状。 いっそのこと適当なスクリプトを自分で書いてしまった方が色々できて 良さそう。。。
ただ、 Homebrew brew-tapと Homebrew-caskを 知れたのは良かったです。 差し当たり現在入れてある物はcaskで置き換えたりはしてませんが、 そのうち。
と、思って、cask
についていろいろ調べてた時、
cask
の実体が/opt/
以下にあるのでちょっと/opt/
行った所、
boxen
ディレクトリを発見。
そう言えば、ちょっと前に
とかあったのでBoxen 入れてみようと思って、 でも途中でMac1台しか持ってないし、まだ暫く買い換えなそうだし、 次Mac買うとも限らないし、、、と思って途中で辞めたのを思い出しました。
ただ、Homebrew 自体がBoxenで管理できたりするので、 まずはBoxenで管理出来るパッケージはBoxenでして、 それ以外をHomebrew(+cask)で管理する、と言う感じにするのが良いのかも。
そのうちやりたいところ。。。
GitHub pages + Octopressの導入でrubyと一緒に導入済。 ↩
通常のHomebrewの各パッケージ用の設定ファイルは
/usr/local/Library/Formula/
内のvim.rb
等。 ↩