読者です 読者をやめる 読者になる 読者になる

どくぴーの備忘録

真面目なことを書こうとするクソメガネのブログ。いつ投げ捨てられるのかは不明

クソメガネの自己流Mac環境構築

※ 2015/4/28現在での話です!閲覧時期によっては別の方法が良かったりします

現在使っているMacBook Air(mid 2013)をMavericksで運用していたのですが,Yosemiteにアップデート,というよりクリーンインストールしました.

事の始まり

qiita.com

rootpipeなる「root奪えてsetuidもできてしまうやりたい放題な激ヤバ脆弱性」が発見されたそうです.その脆弱性を受けたAppleは「10.10 Yosemiteはアップデートで修正するが10.9 Mavericks以下は修正しない」という予定を発表.Mavericksが気に入って使ってた(というよりYosemiteにアップデートする機会がなかった)のですが,そんな脆弱性が残ったバージョンではさすがにまずいと思って,アップデートしようとしたものの

  • TeX( + Homebrew?)を導入していると延々とアップデートが続くらしい
  • 前回頑張って掃除したストレージがまた空きが減ってきてキリがなくなってきた

等々の理由により,「いっその事クリーンインストールしてしまおう!」となった次第

とりあえずバックアップ

当たり前ですがすべてのデータは吹っ飛ぶので,コードはgithubにちゃんとプッシュしておくなり,メディアはUSBメモリに一時避難させるなり,Google DriveDropbox,Copyといったクラウドストレージにぽいぽいするなり,Time Machineでバックアップをとるなりしておく.

いざクリーンインストール

覚悟を決めたらクリーンインストール.やり方が分からなくても「Mac クリーンインストール」とかでググればだいたい出てくる

環境構築

ここが本題.

とかにあるように,Macの環境構築というとHomebrew + brew-cask + Brewfileで brew bundle を実行して導入を自動化すると幸せになれたらしい

が,

などにも書いてあるようにBrewfileは上記二記事に書いてあるような方法を使うと怒られるようになってしまい,Brewfileをシェルスクリプト化したりしないと動かないようになってしまった.

ということはもうBrewfileはこんなことしないと使えないのか,…ということはなく,

のようにPythonで書かれた構成管理ツールAnsibleでHomebrew自体を管理したり

のようにBundleを引き継ぐようなリポジトリも存在している.

そこで,今回はBrew-fileを使ってMacの環境構築を行うことにした.

github.com

インストール自体は

$ 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なりで環境構築をやりやすいようにしておくとバックアップさえきちんと取っておけばクリーンインストールが手軽にできるので便利だなって思いました.