Homebrewの拡張機能の一つでアプリをインストールする際に使う Homebrew Caskですが、 実行ファイルの登録方法が変更され、 インストール方法もこれまでと違うものになったので ちょっと注意が必要です。
cmdディレクトリの導入
ちょっと前に Brew-file に関して色々作業してた時に見つけたんですが、 現在、Homebrewではサブコマンドを拡張する際、 2つの方法で拡張することが出来ます。
上に書いてありますが、
brew-XXX
という名前の実行ファイルをPATH
が通ったディレクトリに入れる。- cmdという名前のディレクトリを持ったレポジトリを作ってそのディレクトリの中に
brew-XXX
を入れレポジトリをTapする。
という方法があります。
前者の方法だと、このコマンドが入ったレポジトリなりアーカイブ等を作り、
そのFormulaを自分で公開するなりHomebrewに入れてもらって
brew install
でインストールする必要があります。
この場合、コマンドを更新するには、brew update
でFormulaをアップデートしてもらい、
さらにbrew upgrade
でコマンドをアップデートしてもらう必要があります。
後者は比較的新しいもので、メリットとしてはTapでチェックアウトした
ディレクトリにあるファイルを直接使うので、
brew update
を行っただけでコマンドが更新されます。
デメリットとしてはFormulaを使わないので
バージョン指定や細かいインストールオプション等を付ける事は出来ません。
また、masterレポジトリとかで直接開発してると最新版が常に
配布されてしまうので、場合によっては開発版をきちんと別ブランチで作る必要があります。
ですので、普通のソフトウェアに関してはFormulaを使いますが、
Homebrewの拡張をする、と言う際には、
通常Homebrewのアップデート(brew update
)に伴い一緒にアップデートされる方が
嬉しいのでHomebrew側としても拡張コマンドに関しては
cmdの方法を作ることを勧めています。
で、Homebrew-Caskも以前はFormulaを使っていましたが、 先週くらいにアップデートがあってcmdを使う方法に変更したみたいです。
アップデートに必要なこと
このアップデートによって、レポジトリにあるFormulaも 一応まだ残ってますが何もインストールしないで 注意だけ出すように変更されています。
homebrew-cask/brew-cask.rb at master · caskroom/homebrew-cask: https://github.com/caskroom/homebrew-cask/blob/master/brew-cask.rb
Tapさえしてあれば動くので、
既にbrew-cask
をインストールしてある場合、
brew update
を行っても
そのままでも特に問題は無いのですが、
/usr/local/bin/brew-caskがリンク切れで残ってたり
(但し、cmdの方を優先するらしくこれ自体は問題は起こさない)
気持ち悪い部分もあるので削除しておく方がベターです。
Homebrew-Caskのページが言って居るように
$ brew uninstall --force brew-cask; brew update
としてあげれば 完全に新しい物に移行して古いものを削除することが出来ます。
今後、新しくHomebrwe-Caskをインストールしたい場合には
$ brew tap caskroom/cask
だけでOKになり、アップデートもbrew update
だけでされるようになります。
ちなみにcaskというFormulaもありますが、こちらは Emacsのプロジェクトマネージメントツールなので 混乱しないように(というかちょっと混乱した)。
Brew-fileでのアップデート
Brew-file の中でもHomebrew-Caskを使って アプリの一覧等を取得していて、 Homebrew-Caskがインストールされてない場合には自動でインストールする機能もついています。
これが古いままで必要ないインストールを行ったり 古い間違ったチェックをしたりしている部分があったので アップデートしました。
Brew-fileもサブコマンドの拡張の一つなので、 これもcmdディレクトリベースにした方が良いのかな、とちょっと考えてます。
変更はファイルを移動させるだけで一瞬なので、 Caskの変更が広まるこのタイミングでやるのがベストなのかも、とも。
追記: 2015/12/18
と思いましたが、今、Brew-fileにはBashやZshでの
brew
コマンドに対する補完強化機能を入れるためのファイルをインストールしていて
これはFormulaを使わないとインストール出来ません。
必須な部分でもないしこの部分だけ別途インストールする様にしても良いのですが、 ちょっと検討中。
追記ここまで