rcmdnk's blog
Last update

Same Old Story [Explicit]

Macでのパッケージ管理はHomebrewで行うようにしてますがbrewdlerというものがあって、 より簡単に管理できそうだ、と言うことでちょっと試してみました。 ついでに、brewdlerのREADMEで始めてHomebrewにtapというコマンドがあることや Homebrew-caskという拡張があることも知ったのでその辺について。

追記: 2013/09/13

Brewall というHomebrewのパッケージたちをを管理するスクリプトを書いてみました。 Brewdlerでの使い勝手に加え、Brewderでいまいちだったところを改善してあります。 簡単なシェルスクリプトです。

Ref: Brewall: brewパッケージを管理する

追記ここまで

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-tapHomebrew-caskも使えるとの 記述があって、それらも初めて知ったのでちょっと試してみました。

brew tap

brew tapは Homebrewに実装されてるコマンドで、GitHubのレポジトリにある パッケージをそのままインストールするコマンドです。 最近のHomebrewがインストールされてればそのまま使えます。

使い方はbrewの後にtapコマンドを入れて、後はレポジトリ名。 次に使うcaskなんかだと、

$ brew tap phinze/homebrew-cask
$ brew install brew-cask

こんな感じで。

追記: 2014/05/12

Caskのレポジトリが更新され、現在は caskroom/homebrew-cask というアカウント名caskroomという元で管理されています。

Homebrew 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'

の様に、tapbrewのコマンドを順に書きます。 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の部分でlangen-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を作る時は、

  1. tap ‘phinze/homebrew-cask’
  2. brew ‘brew-cask’
  3. cask ‘firefox’

の様にまず、caskをtap、caskをインストール、 その後にcaskでインストールするもの、のように書いていく必要があります。

まとめ

brewdlerが便利そうだな、と思って使ってみたんですが、いまいち単なる リストと違って何が嬉しいのかわからないのが現状。 いっそのこと適当なスクリプトを自分で書いてしまった方が色々できて 良さそう。。。

ただ、 Homebrew brew-tapHomebrew-caskを 知れたのは良かったです。 差し当たり現在入れてある物はcaskで置き換えたりはしてませんが、 そのうち。

と、思って、caskについていろいろ調べてた時、 caskの実体が/opt/以下にあるのでちょっと/opt/行った所、 boxenディレクトリを発見。 そう言えば、ちょっと前に

Ref: Boxen使わなくても許されるのは2012年までだよね

とかあったのでBoxen 入れてみようと思って、 でも途中でMac1台しか持ってないし、まだ暫く買い換えなそうだし、 次Mac買うとも限らないし、、、と思って途中で辞めたのを思い出しました。

ただ、Homebrew 自体がBoxenで管理できたりするので、 まずはBoxenで管理出来るパッケージはBoxenでして、 それ以外をHomebrew(+cask)で管理する、と言う感じにするのが良いのかも。

そのうちやりたいところ。。。

追記: 2013/09/13

Brewall もせっかく作ったのでもうちょっとHomebrewで弄びたいところでも。

追記ここまで

Sponsored Links
  1. homebrewのパッケージをGemfileみたく管理したい -> brewdlerがあった…

  2. GitHub pages + Octopressの導入でrubyと一緒に導入済。

  3. 通常のHomebrewの各パッケージ用の設定ファイルは/usr/local/Library/Formula/内のvim.rb等。

  4. brew tap

  5. homebrew-cask/USAGE.md

Sponsored Links

« ウェブページを読みやすくするBeeLine Reader Brewall: brewパッケージを管理する »

}