OS Xにおいて、Homebrewで Caskを用いることで アプリケーションのインストールを簡単にコマンドラインから行うことが出来ます。
ただ、いくつかのアプリについて、Homebrewの Formula と Cask の両方に同じアプリ用のファイルが用意されている物があります。
ちょっと今回その辺で気づいたことがあったのでメモ。
mpv: 今回Caskから削除されたもの
気づいたきっかけとしては mpv という動画再生アプリのCaskが削除されてたことでした。
削除されると、brew cask list
とかしたときに
mpv (!)
みたいに(!)
付きで表示されます。
既にインストールされているものなのでそのままでも使えますが Homebrew周りで色々と面倒も出てきます。
一方、mpvはFormulaも持っていて、brew install mpv
でインストールできます。
mpv.ioのHomepageだとこちらが書いてあります。
ので、Cask版をアンインストールしてHomebrew版を入れます。
この際、ちょっと面倒で、まずCask版のアンインストールが
brew cask uninstall mpv
では出来ません。(Caskが無いので。)
なので直接
$ rm -rf /Applications/mpv.app
$ rm -rf /opt/homebrew-cask/Caskroom/mpv
と削除してしまいます。
(brew cask cleanup
をすることでCaskroomの方のディレクトリは消える?
みたいですが、/Applicationsの方のリンクは残るので手動で消さないといけません。)
次にFormulaを使ったインストールですが、これもちょっと厄介で、まず、 アプリをインストールするためには
$ brew install mpv --with-bundle
とbundle
オプションが必要です。(付けないとmpv
というコマンドツールだけがインストールされる。)
なんですが、このbundle版をビルドする際、python3を使うため、
PYTHONPATH
にpython2.7のものが入っていると
Your PYTHONPATH points to a site-packages dir for Python 2.x but you are running Python 3.x!
みたいなエラーが出ます。 なので、
$ export PYTHONPATH=/usr/local/lib/python3.5/site-packages:/usr/lib/python3
のようにPYTHONPATHを3.5用にする必要があります。 (python3自体は入ってなくてもmpvをインストールしようとすると自動でインストールされます。)
ここでまた一つ厄介なのが、
Brew-file
でbrew
コマンドをラップしているとpythonを使うので
(/usr/bin/env python
なので/usr/local/bin/python
な2.7になる)、
今度はこちらで
Your PYTHONPATH points to a site-packages dir for Python 3.x but you are running Python 2.x!
というエラーが出てしまう可能性があります。 なので、この場合は
$ command brew install mpv --with-bundle
と直接元のbrew
を使うなりで対処。インストールした後に
$ brew file init
でBrewfileをアップデート。
もしくは、ちょっとトリッキーに
$ cd /tmp
$ export PATH=.:$PATH
$ export PYTHONPATH=/usr/local/lib/python3.5/site-packages:/usr/lib/python3
$ ln -s /usr/local/bin/python3 python
$ brew install mpv --with-bundle
と無理やりPATH内のpythonをpython3にしてしまう方法も無くもないです。
HomebrewのFormulaとCaskで重複してるアプリの今後
ということでmpvについては特別面倒ではありましたが、 他にも沢山この様に重複しているものはあり、 今後特にCask側が削除される可能性は大きいです。
というのも、Cask側では今後Homebrewとの本格的な統合に向けて これらの重複をなくしていこうと言う話をしているからです。
Remove casks which duplicate Homebrew formulae · Issue #15603 · caskroom/homebrew-cask
ただ、単にCaskを消してしまうとユーザーに混乱をもたらしてしまうので 慎重に、と言った感じで余り積極的に消していってる感じではありません。
mpvに限って言うと、上にも書いたようにmpvのHomepageでFormulaの方を 表示しているのと、最新版のビルド版の配布が行われていない(失敗している)ため、 Cask版は削除されたようです。
ここからも分かるように、 Formula版の方は基本、ソースコードからビルドして作るような物です。
Cask版の場合は既にビルドされてzipやdmp形式、もしくはそのままapp形式で配布されている様な場合に使います。
MacVimのFormulaとCaskは以下の様な感じ。
Formulaの方が自分でビルドするのでLuaオプション等自由にカスタマイズビルドが出来る様になっています。
今後に関しては、基本的にはFormulaの方で対応出来るものはFormulaに絞る、と言う 感じになっていくのかな、と言う感じです。 なので、 上のIssueのリストに載ってる様なものでCask版を使ってる場合には なるべくFormulaを使う様に移行しておいた方が後々楽かもしれません。
ただし、中にはFormula版とCask版で同じ名前でも 違う物をインストールしている場合もある可能性もあるのでちょっと注意です。