Homebrewで*.dmgなアプリをインストールしたい→それhomebrew-caskで出来るよ


[BoxenがどうやってMacアプリ(*.dmg)をインストールしているのか調べてみた](http://qiita.com/paming/items/6d810b0162b553ddefd5) の続き。調べてたらちょうど目的にかなう[homebrew-cask](https://github.com/phinze/homebrew-cask)を見つけました。

[homebrew-caskが良さそうなので導入してみた](http://blog.digital-bot.com/blog/2013/09/08/homebrew-cask/)
[コマンドラインでMacのアプリをインストール](http://qiita.com/ksato9700/items/6f594597fe11c1bbeff8)

というわけでレッツトライ
----
```
$ brew tap phinze/homebrew-cask
$ brew install brew-cask
```
これだけでインストール完了。デフォルトではアプリが~/Application/の下にリンクが張られます。最初は↓のように設定していましたが、途中からデフォルトに戻しました。

```bash:
export HOMEBREW_CASK_OPTS="--appdir=/Applications"
```

AppStoreから入れた事のあるアプリ
----
まずはevernoteを入れてみます。

```
macmini:~ tak$ brew cask search evernote
==> We need to make Caskroom for the first time at /opt/homebrew-cask/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password:
evernote
macmini:~ tak$ brew cask install evernote
==> Downloading https://www.evernote.com/about/download/get.php?file=EvernoteMac
######################################################################## 100.0%
==> It seems there is already an app at /Applications/Evernote.app; not linking.
==> Success! evernote installed to /opt/homebrew-cask/Caskroom/evernote/latest
macmini:~ tak$ 
```
すでに入ってるので怒られました。/Applicationの下にあるevernoteを削除してリトライ

```
macmini:~ tak$ brew cask install evernote
Error: Cask for evernote is already installed. Use `--force` to install anyways.     // ←怒られた
macmini:~ tak$ brew cask uninstall evernote
macmini:~ tak$ brew cask install evernote
==> Downloading https://www.evernote.com/about/download/get.php?file=EvernoteMac
Already downloaded: /Library/Caches/Homebrew/evernote-latest.php
==> Linking Evernote.app to /Applications/Evernote.app
==> Success! evernote installed to /opt/homebrew-cask/Caskroom/evernote/latest
macmini:~ tak$ 
```
これで入ったようです。
Evernoteを起動すると、"AppStore版のインストールが検出"とダイアログが出てきます。これはEvernoteの中でのチェックでしょうか。

![空白_Skitch_キャンバス.png](https://qiita-image-store.s3.amazonaws.com/0/7946/d1cb8e2c-0ed6-e802-3656-b22dafd108d7.png "空白_Skitch_キャンバス.png")

たしかにAppStoreから入れた版を使っていたのでこれは正常です。AppStoreの「購入済み」からEvernoteを"隠して"おきます。

dmgパッケージから入れたアプリ
----
SourceTreeはdmgパッケージから入れてたので、これをbrew caskします。

```bash:
macmini:~ tak$ cd /Applications/
macmini:Applications tak$ ls
Alfred.app		Font Book.app		Safari.app
App Store.app		FormatMatch.app		ScanSnap
Automator.app		Game Center.app		Skitch.app
Calculator.app		Image Capture.app	SourceTree.app //← dmgから入れたもの
Calendar.app		KeyRemap4MacBook.app	Stickies.app
CheatSheet.app		Kobito.app		Sublime Text 2.app
Chess.app		Launchpad.app		SugarSync.app
Chocolat.app		Mail.app		System Preferences.app
ClamXav.app		Maps.app		TextEdit.app
Contacts.app		Messages.app		Time Machine.app
DVD Player.app		Mission Control.app	TotalTerminal.app
Dashboard.app		Notes.app		Utilities
Dictionary.app		Photo Booth.app		Xcode.app
Evernote.app		Preview.app		iBooks.app
Evernote.appdownload	QuickTime Player.app	iTunes.app
FaceTime.app		Reminders.app
macmini:Applications tak$ mv SourceTree.app /tmp/   // ←tmpに退避
macmini:Applications tak$ brew cask install sourcetree
==> Downloading http://downloads.atlassian.com/software/sourcetree/SourceTree_1.
######################################################################## 100.0%
==> Linking SourceTree.app to /Applications/SourceTree.app
==> Success! sourcetree installed to /opt/homebrew-cask/Caskroom/sourcetree/1.7.
macmini:Applications tak$ ls /Applications/
Alfred.app		Font Book.app		Safari.app
App Store.app		FormatMatch.app		ScanSnap
Automator.app		Game Center.app		Skitch.app
Calculator.app		Image Capture.app	SourceTree.app // ←できた
Calendar.app		KeyRemap4MacBook.app	Stickies.app
CheatSheet.app		Kobito.app		Sublime Text 2.app
Chess.app		Launchpad.app		SugarSync.app
Chocolat.app		Mail.app		System Preferences.app
ClamXav.app		Maps.app		TextEdit.app
Contacts.app		Messages.app		Time Machine.app
DVD Player.app		Mission Control.app	TotalTerminal.app
Dashboard.app		Notes.app		Utilities
Dictionary.app		Photo Booth.app		Xcode.app
Evernote.app		Preview.app		iBooks.app
Evernote.appdownload	QuickTime Player.app	iTunes.app
FaceTime.app		Reminders.app
macmini:Applications tak$ 
```
これも起動させてみます、、あれ、2つ出てきた。
![Kobito_と_App_Store_と_アプリケーション-2.png](https://qiita-image-store.s3.amazonaws.com/0/7946/197d721f-8b1f-5f87-af0e-7e474a745aef.png)

どうやら/tmp/に移動させたものが残ってしまうようです。/tmp/のSourceTree.appを削除して、長押し→×で削除して１つになりました。

自動updateするタイプのアプリはどうなるのか？
----
続いてkobitoも入れ替えます。

```
macmini:Applications tak$ pwd
/Applications
macmini:Applications tak$ rm -rf Kobito.app/
macmini:Applications tak$ brew cask install kobito
==> Downloading http://kobito.qiita.com/download/Kobito_v1.8.2.zip
######################################################################## 100.0%
==> Linking Kobito.app to /Applications/Kobito.app
==> Success! kobito installed to /opt/homebrew-cask/Caskroom/kobito/1.8.2
```
2013/12/2現在、Kobitoの最新バージョンは[1.8.4](http://kobito.qiita.com)なので、古いバージョンが入りました。
Kobitoには更新のチェック機能があるのでそれで1.8.4に更新すると、homebrew-caskでインストールされた```/opt/homebrew-cask/Caskroom/kobito/1.8.2/``` の中が1.8.4で更新されているようです。これちょっと気持ち悪いですがそれほど支障はありません。

```bash:
# homebrew-caskで入れた直後
$ ls -la /opt/homebrew-cask/Caskroom/kobito/1.8.2/Kobito.app/Contents/MacOS/Kobito 
-rwxr-xr-x  1 tak  staff  1295376  9 10 18:14 /opt/homebrew-cask/Caskroom/kobito/1.8.2/Kobito.app/Contents/MacOS/Kobito
# Kobitoの更新を行った直後
$ ls -la /opt/homebrew-cask/Caskroom/kobito/1.8.2/Kobito.app/Contents/MacOS/Kobito 
-rwxr-xr-x  1 tak  staff  1406944 11 21 15:28 /opt/homebrew-cask/Caskroom/kobito/1.8.2/Kobito.app/Contents/MacOS/Kobito
```
バージョンがずれているのを見つけたら、 自分で直してpullRequest送るのが良いですよね。後でやりましょう（←忘れるフラグ）


ClamXavは自分自身を「アプリケーションフォルダ」に移動しようとした
----
![空白_Skitch_キャンバス.png](https://qiita-image-store.s3.amazonaws.com/0/7946/08c2f1f8-2679-7d2b-03fd-680e7d318b30.png )
セキュリティソフトだからでしょうか？ここは「今後このメッセージを表示しない」をチェックして黙ってもらいます。
これはAlfredでも同じようなダイアログが出てきます。

caskで入れたアプリをAlfredのサジェストに出す
----
これも、homebrew-caskのコマンドで提供されています。```brew cask alfred link```でAlfredからアプリが見えるようになります。

```bash:
macmini:~ tak$ brew cask alfred
==> brew cask alfred
manages integration with Alfred; allows applications installed with
homebrew cask to be launched by Alfred by adding the Caskroom to Alfreds
search paths

subcommands:
  status - reports whether Alfred is linked
  link   - adds Caskroom to alfred search paths
  unlink - removes Caskroom from Alfred search paths
macmini:~ tak$ brew cask alfred status
==> Alfred is not linked to homebrew-cask.
macmini:~ tak$ brew cask alfred link
==> Successfully linked Alfred to homebrew-cask.
```

SugarSyncはcaskにも入ってない？
----
homebrew-caskにも入っていないものがあり、[SugarSync](http://www.sugarsync.jp)と[FormatMatch](https://itunes.apple.com/jp/app/formatmatch/id445211988?mt=12&ign-mpt=uo%3D4)は見つかりませんでした。FormatMatchはAppStoreからのみの提供みたいなので仕方ありません。SugarSyncはメジャーなのに入っていないので、何か理由があるのかもしれません。

homebrew-caskに引っ越したアプリ
----
```bash:
macmini:Applications tak$ brew cask list
alfred		    evernote		skitch		    totalterminal
cheatsheet	    keyremap4macbook	sourcetree
clamxav		    kobito		sublime-text
macmini:Applications tak$ 
```
TotalTerminalとkeyRemap4MacBookは、/Applicationに入りました。それ以外は~/Applicationに入りました。

で、ここまでしてうれしい事あるの？
----
すでに入ってるアプリを、わざわざhomebrew-caskで入れ直してみました。これで何が嬉しいかというと __あまり嬉しい事はありません。__ ですが、Macもハードウェアなので何時クラッシュするかもしれず、そんなときに役に立つはずです、、、という風を装った[ヤクの毛刈り](https://www.google.co.jp/search?client=safari&rls=en&q=yak%E3%81%AE%E6%AF%9B%E7%8B%A9%E3%82%8A&ie=UTF-8&oe=UTF-8&gws_rd=cr&ei=522cUu34K4fMkgWD_IDwBw#q=%E3%83%A4%E3%82%AF%E3%81%AE%E6%AF%9B%E5%88%88%E3%82%8A&rls=en&spell=1)でした。
ちゃんちゃん。