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等。 ↩
![Same Old Story [Explicit]](https://images-na.ssl-images-amazon.com/images/I/51FeRgNZqeL._SS200_.jpg)