BoxenがどうやってMacアプリ(*.dmg)をインストールしているのか調べてみた の続き。調べてたらちょうど目的にかなうhomebrew-caskを見つけました。
homebrew-caskが良さそうなので導入してみた
コマンドラインでMacのアプリをインストール
というわけでレッツトライ
$ brew tap phinze/homebrew-cask
$ brew install brew-cask
これだけでインストール完了。デフォルトではアプリが~/Application/の下にリンクが張られます。最初は↓のように設定していましたが、途中からデフォルトに戻しました。
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の中でのチェックでしょうか。
たしかにAppStoreから入れた版を使っていたのでこれは正常です。AppStoreの「購入済み」からEvernoteを"隠して"おきます。
dmgパッケージから入れたアプリ
SourceTreeはdmgパッケージから入れてたので、これをbrew caskします。
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$
どうやら/tmp/に移動させたものが残ってしまうようです。/tmp/のSourceTree.appを削除して、長押し→×で削除して1つになりました。
自動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なので、古いバージョンが入りました。
Kobitoには更新のチェック機能があるのでそれで1.8.4に更新すると、homebrew-caskでインストールされた/opt/homebrew-cask/Caskroom/kobito/1.8.2/
の中が1.8.4で更新されているようです。これちょっと気持ち悪いですがそれほど支障はありません。
# 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は自分自身を「アプリケーションフォルダ」に移動しようとした
セキュリティソフトだからでしょうか?ここは「今後このメッセージを表示しない」をチェックして黙ってもらいます。
これはAlfredでも同じようなダイアログが出てきます。
caskで入れたアプリをAlfredのサジェストに出す
これも、homebrew-caskのコマンドで提供されています。brew cask alfred link
でAlfredからアプリが見えるようになります。
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とFormatMatchは見つかりませんでした。FormatMatchはAppStoreからのみの提供みたいなので仕方ありません。SugarSyncはメジャーなのに入っていないので、何か理由があるのかもしれません。
homebrew-caskに引っ越したアプリ
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もハードウェアなので何時クラッシュするかもしれず、そんなときに役に立つはずです、、、という風を装ったヤクの毛刈りでした。
ちゃんちゃん。