新しいMacにはHomebrewを使ってアプリをインストールしよう!


新しいMac

会社用のMacを家で普通に使っているのも、流石にあれな気がするので、先日新しいMacを購入しました。新しく購入をしたので、せっかくなので今までちゃんとやったことなかったし、Homebrew使ってもろもろインストールしてみようかとやってみました。

今まではHomebrew+Brewfileでbrew buldle

とやっていたのですが、brew bundleが使えなくなってしまいました。

Brewfileで管理するのはオワコン
http://unasuke.com/info/2014/brewfile-is-outdated/

そんな中
Brewfileはオワコンではない
http://rcmdnk.github.io/blog/2015/03/24/computer-mac/

どっちやねん

Homebrewとbrew brewdleでパッケージをインストール

ざっくり言えば
brew bundleは使えなくなりましたが、brew brewdleというコマンで使えるので、まだいけるよ、ということです。

それではbrew brewdleを使って必要なパッケージをインストールしていきます。

Homebrewをインストール

こういうのは公式サイトを見た方がいいですね。
http://brew.sh/index_ja.html

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew-fileとbrew-wrapのインストール

参考:Brew-fileでMacのパッケージを簡単に管理する

これを設定するとbrewコマンドインストールしたときに、自動でBrewfileも更新されます。Brewfileは/usr/local/Libraryに作成されます。

brew-fileをインストールします。

$ brew install rcmdnk/file/brew-file

次にBrewfileの自動アップデート用の設定

.bashrc辺りに下記記述をコピペしときます。これをしておくとbrewコマンド時にBrewfileが自動で更新されます。

if [ -f $(brew --prefix)/etc/brew-wrap ];then
source $(brew --prefix)/etc/brew-wrap
fi

Homebrew Caskをインストール

これを使うことでMacの各アプリをインストールすることができます。
http://caskroom.io

$ brew install caskroom/cask/brew-cask

brew cask search <app-name>でアプリ名を検索できます。
chromeをインストールしたい場合は

$ brew cask search google
==> Partial matches
google-adwords-editor google-earth google-japanese-ime google-plus-auto-backup
google-chrome google-earth-pro google-nik-collection google-refine
google-cloud-sdk google-earth-web-plugin google-notifier google-web-designer
google-drive google-hangouts google-photos-backup googleappengine

google-chromeとあるので、

$ brew cask install google-chrome

とします。

Brewfileを確認

Brewfileはどうしたんだ、というところですがある程度パッケージをインストールしてBrewfileを確認してみると自動的に書き込まれているのがわかるとおもいます。

$ vi /usr/local/Library/Brewfile

# tap repositories and their packages

## caskroom/cask
tap caskroom/cask
brew brew-cask
cask google-chrome

Brewfileを使ってアプリ・パッケージをインストール

ここからBrewfileを編集して一括でアプリやパッケージをインストールしてみます。
ただ、ここで1つ罠?があります。

自動で書き込まれたファイルにはアプリ名やパッケージ名をシングルクォーテーションで囲んでいないのですが、これをシングルクォーテーションで囲まないとコマンド実行時にエラーになります。
brew brewdle実行時に下記のような無常なエラーが出た場合は、おそらくシングルクォーテーションで囲んでません。

$ brew brewdle -v
Error: Invalid Brewfile.
undefined local variable or method `caskroom' for #&lt;Bundle::Dsl:0x007ff90ca0df40&gt;
/usr/local/Library/Taps/homebrew/homebrew-brewdler/lib/bundle/dsl.rb:31:in `instance_eval'
/usr/local/Library/Taps/homebrew/homebrew-brewdler/lib/bundle/dsl.rb:31:in `instance_eval'
/usr/local/Library/Taps/homebrew/homebrew-brewdler/lib/bundle/dsl.rb:31:in `process'
/usr/local/Library/Taps/homebrew/homebrew-brewdler/lib/bundle/dsl.rb:19:in `initialize'
/usr/local/Library/Taps/homebrew/homebrew-brewdler/lib/bundle/commands/install.rb:4:in `new'
/usr/local/Library/Taps/homebrew/homebrew-brewdler/lib/bundle/commands/install.rb:4:in `run'
/usr/local/Library/Taps/homebrew/homebrew-brewdler/cmd/brew-brewdle:71:in `&lt;main&gt;’

取り敢えず必要そうなものを用意したファイルはこんな感じです。

# tap repositories and their packages

## caskroom/cask
tap 'caskroom/cask'
brew 'brew-cask'
cask 'coda'
cask 'dropbox'
cask 'evernote'
cask 'firefox'
cask 'google-chrome'
cask 'skype'
cask 'sourcetree'
cask 'sublime-text'
cask 'transmit'
cask 'vagrant'
cask 'virtualbox'

## caskroom/fonts
tap 'caskroom/fonts'

# Other Homebrew packages
brew 'vim'
brew 'wget'

とりあえずこんな感じにしてみる

まとめ

しかしこの手の簡単になるはずのツールってなかなか便利さを体感できないんだよね・・・
chef+berkshelfとかでも感じたけど、使おうと思ったときには、もはやそのときの情報が古くてまた覚え直すという・・・

今回もchromeをインストールしたいだけなのに2時間ぐらいかかった気がする・・・もう1から普通にやった方が早いのでは