※ 2015/4/28現在での話です!閲覧時期によっては別の方法が良かったりします
現在使っているMacBook Air(mid 2013)をMavericksで運用していたのですが,Yosemiteにアップデート,というよりクリーンインストールしました.
事の始まり
rootpipeなる「root奪えてsetuidもできてしまうやりたい放題な激ヤバ脆弱性」が発見されたそうです.その脆弱性を受けたAppleは「10.10 Yosemiteはアップデートで修正するが10.9 Mavericks以下は修正しない」という予定を発表.Mavericksが気に入って使ってた(というよりYosemiteにアップデートする機会がなかった)のですが,そんな脆弱性が残ったバージョンではさすがにまずいと思って,アップデートしようとしたものの
等々の理由により,「いっその事クリーンインストールしてしまおう!」となった次第
とりあえずバックアップ
当たり前ですがすべてのデータは吹っ飛ぶので,コードはgithubにちゃんとプッシュしておくなり,メディアはUSBメモリに一時避難させるなり,Google Drive,Dropbox,Copyといったクラウドストレージにぽいぽいするなり,Time Machineでバックアップをとるなりしておく.
いざクリーンインストール
覚悟を決めたらクリーンインストール.やり方が分からなくても「Mac クリーンインストール」とかでググればだいたい出てくる
環境構築
ここが本題.
とかにあるように,Macの環境構築というとHomebrew + brew-cask + Brewfileで brew bundle
を実行して導入を自動化すると幸せになれたらしい
が,
などにも書いてあるようにBrewfileは上記二記事に書いてあるような方法を使うと怒られるようになってしまい,Brewfileをシェルスクリプト化したりしないと動かないようになってしまった.
ということはもうBrewfileはこんなことしないと使えないのか,…ということはなく,
のようにPythonで書かれた構成管理ツールAnsibleでHomebrew自体を管理したり
のようにBundleを引き継ぐようなリポジトリも存在している.
そこで,今回はBrew-fileを使ってMacの環境構築を行うことにした.
インストール自体は
$ brew install rcmdnk/file/brew-file
でOK.続いて,dotfiles等にすでにBrewfileを作成済み(筆者はこのパターン)な場合はそのBrewfileを持ってくる.持ってないなら
$ brew file dump
で空のBrewfileを作成できる.
ちなみに筆者のBrewfileは以下の通り.App Storeで管理しているものもいくつかあるのでそれは後で手動で入れる感じ.
# Homebrew update update # reload Formula formula # add repository tap homebrew/binary tap phinze/homebrew-cask # packages for development install git install vim install imagemagick install wget install heroku-toolbelt install rbenv install ruby-build install tmux # brew-cask install brew-cask # applications from cask cask install android-studio cask install arduino cask install bettertouchtool cask install caffeine cask install dropbox cask install iterm2 cask install kobito cask install macvim cask install virtualbox cask install google-chrome cask install google-drive cask install sublime-text cask install atom cask install alfred cask install dash cask install java cask install rubymine cask install intellij-idea cask install slack cask install sourcetree cask install flux cask install skitch cask install macvim cask install google-japanese-ime # delete unnecessary files cleanup
筆者はAlfredを使用しているのだが,少し前だとbrew caskを用いて導入した.appはそのままではalfredから呼び出せないので, alfredにcaskでインストールする.appのディレクトリを検索パスに与えるために
brew cask alfred brew cask alfred link
を実行しないと行けなかったのだが,いまこれをやろうとすると
==> Great news! ==> As of v2.6, Alfred now has first-class support for Casks out of the box! ==> So there's no more need for `brew cask alfred`. Go upgrade your Alfred! :)
なんて言われる.どうやら,Alfredがデフォルトでcaskでのデフォルトのインストール先のパスも検索してくれるようになったので,何も考えずに導入するならAlfredに関しては心配が要らなくなったみたい.
ちなみに,じゃあデフォルトのインストール先はどこなんだというと,「/opt/homebrew-cask/Caskroom」になり、「~/Applications」にシンボリックリンクを貼るらしい。 これを変えたい場合は、「HOMEBREW_CASK_OPTS」という環境変数に指定すれば変更できる。なので,homebrew同様に「/usr/local」下に配置したり,シンボリックリンクを「\Application」に貼るようにもできる.具体的には
export HOMEBREW_CASK_OPTS="--appdir=/Applications --caskroom=/usr/local/Caskroom"
を実行するとOK(appdirとcaskroomのパスは各自で決めてね).ただし,caskroomのパスを変えると今度はAlfredが.appを検索できなくなるので,変更したらAlfredのPreferencesのFeaturesタブのSearch Scopeにcaskroomのパスを追加することを忘れないように.
ここまでやったら,あとはbrew file install
を実行する,…のだが,デフォルト設定では,「/usr/local/Library/Brewfile」にあるBrewfileを読み込もうとするので,
export HOMEBREW_BREWFILE="(自分のBrewfileの置き場)"
に設定してあげたり,-f <FILE>
で実行時に指定してあげたり,「/usr/local/Library/Brewfile」にシンボリックリンクを貼ってあげたりしてから実行する.するとあとは自動でインストールをゴリゴリしてくれる.楽ちん.
あとはdotfiles適用したり,自分好みの環境に戻しましょうねって感じで完了です.
終わりに
僕のMBAが外装以外は新品同様に生まれ変わりました.空き容量は現在80GB強です.
Brew-fileなりで環境構築をやりやすいようにしておくとバックアップさえきちんと取っておけばクリーンインストールが手軽にできるので便利だなって思いました.