rcmdnk's blog

Objet DArt Release #386 Aged In Oak Wine & Whiskey Cask Handmade Jeweled Metal & Enamel Trinket Box [並行輸入品]

OS Xにおいて、Homebrewで Caskを用いることで アプリケーションのインストールを簡単にコマンドラインから行うことが出来ます。

ただ、いくつかのアプリについて、Homebrewの FormulaCask の両方に同じアプリ用のファイルが用意されている物があります。

ちょっと今回その辺で気づいたことがあったのでメモ。

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-filebrewコマンドをラップしていると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版は削除されたようです。

Remove mpv.rb which duplicates core formula mpv by zmwangx · Pull Request #20483 · caskroom/homebrew-cask

ここからも分かるように、 Formula版の方は基本、ソースコードからビルドして作るような物です。

Cask版の場合は既にビルドされてzipやdmp形式、もしくはそのままapp形式で配布されている様な場合に使います。

MacVimのFormulaとCaskは以下の様な感じ。

Formula

Cask

Formulaの方が自分でビルドするのでLuaオプション等自由にカスタマイズビルドが出来る様になっています。

今後に関しては、基本的にはFormulaの方で対応出来るものはFormulaに絞る、と言う 感じになっていくのかな、と言う感じです。 なので、 上のIssueのリストに載ってる様なものでCask版を使ってる場合には なるべくFormulaを使う様に移行しておいた方が後々楽かもしれません。

ただし、中にはFormula版とCask版で同じ名前でも 違う物をインストールしている場合もある可能性もあるのでちょっと注意です。

Sponsored Links
Sponsored Links

« Python2.XとPython3.Xを共存させる: Brew-fileのアップデート vim-parenmatchの導入とちょっと注意点 »

}