Tech Racho エンジニアの「?」を「!」に。
  • IT Tips

Macbook Proをクリーンインストール&環境復元したよ

High Sierra向けの記述を追加しました

新年あけましておめでとうございます。hachi8833です。

2017年を迎えるにあたり、年末年始にかけて、Macbook Proの内蔵SSDをフォーマット、Sierraでクリーンインストール、環境復元したので、作業中の注意点などをメモします。

Ruby on Rails開発を意識した環境設定です。

概要

通常であれば環境復元はMac標準のTimeMachineで行うのが圧倒的に楽なので、クリーンインストールを行う必要はまずありません。今回は自分の環境にインストールされていた大量の余分なソフトウェアを整理するのと、新規でRubyとRailsの環境を構築するときの参考にするために、あえてクリーンインストールを行いました。

この手順はクリーンインストールと環境復元用ですが、Macへの新規インストールでも参考になると思います。

Gmailのおかげで巨大なメールアーカイブをえっちらおっちら復元せずに済むようになったのは、本当にありがたいことです。

参考

本当はリンクを参考にAnsibleで全自動セットアップしたかったのですが、うまくいかなかったので普通にHomebrew中心にやりました。でもこのぐらいきれいにしておけば今後のAnsible化は相当やりやすくなったはずなので、次回挑戦してみます。

スペック

モデル
Macbook Pro 2013 Late
LCD
15インチ Retina
CPU
2.3GHz Core i7
SSD
250GB
メモリ
16GB
キーボード
US
その他
64GBのSDカード(補助容量)

事前確認・準備

今さらなことばかりですが指差し確認用に。

スマホ、できれば別マシンを確保

  • 今どきは2段階認証がびしばし登場するのでスマホがないと認証できないアプリやサービスが多数ある
  • 自分のApple ID宛のメールを受信できるようにしておくこと
  • スマホにGoogle Authenticatorアプリを用意しておくこと
    • このアプリの名称がストアやヘルプで統一されてなくて困りましたよ

TimeMachineでバックアップが完了していることを確認する

  • 必要なファイル等はTimeMachineから取り出すことにする

(知らないうちに補助容量用の外付けSDカードでバックアップがオンになっていたのでそっとオフにした)

1Passwordの復元手順を確認する

  • TimeMachineと並んで今回のクリーンアップの生命線
  • 他のパソコンかスマホで1Passwordにアクセスできるようにしておくこと

Wi-Fiパスワードを手元に用意する

  • クリーンインストールの最初の認証でWi-Fiでのネット接続が必要になるので、紙に書いておく

(たまたま他にパソコンがない状況だったので危うく詰むとこだった)

Chromeブラウザのプロファイル同期がオンになっていることを確認

  • やっとかないとブラウザの拡張機能/Cookie/履歴を手動で復元しないとならず、大変大変面倒

TimeMachineからの復元が面倒そうなものを事前にエクスポートなどしておく

  • Homebrewでインストールしたものリスト(brew leaves > brewlist.txt)
    • brew listだと依存パッケージまで出力されて邪魔なので
    • 自分はcaskも使っているのでbrew cask list > brewcasklist.txt
  • アプリケーションのリスト(ls -l /Applications > applist.txt)
  • IMEのユーザー辞書(後から気づいた...)
    • IMEのキーをカスタマイズしているのであればそれもエクスポートしておく
  • 有料アプリのライセンス番号など(自分はGmailで掘り出す予定)
  • PostgreSQLやMySQLの完全なdump
    • Homebrewでインストールしているなら/usr/local/var/以下を復元する手もある
  • ウィルスチェックソフトのライセンス(会社購入なので)
  • (念のため)現状の常駐プログラムをlaunchctl -w list > launchctllist.txtで保存
  • システム環境設定「キーボード」で何らかのカスタマイズを行っているのであれば、スクショを撮っておく

追記

High Sierraで導入されたAPFSには「暗号化あり」と「なし」がある。これはFileVaultによる暗号化とは別物らしい(少なくとも設定は分かれている)ので、両方オンにはしない方がよさそう。

クリーンインストール開始

前半戦

  • ⌘キーとRキーを押しながらMacbookの電源をオンにする
    • プログレスバーが出るまでキーを離さないこと!
  • OS X ユーティリティでディスクユーティリティを実行
  • ディスクを消去
    • フォーマットはデフォルトの「Mac OS 拡張(大文字/小文字を区別しない、ジャーナリング)にすること
    • High Sierraでは「APFS」を選ぶ
    • APFSの暗号化はしないことにした(FileVaultで別途できるため)
    • うっかりUnixらしそうな「大文字/小文字を区別する」を選択するとさまざまな災いが生じる
  • OS X ユーティリティでOS Xを再インストールするを実行
  • ソフトウェア使用許諾契約に同意する
  • インストール先のディスクを選択してインストールを開始する
  • AppleIDとパスワードを入力
  • Wi-Fiを選択してパスワードを入力
  • OSダウンロードが始まり、その後インストールが開始
  • 再起動される

後半戦

  • 言語: 日本語
  • キーボード入力環境: US
  • 今は情報の転送はしない: オン
  • Macを探す: オン
  • iCloudアカウント情報を入力
  • エクスプレス設定: オン -- High Sierra用
  • iCloudキーチェーン: オン
  • ファイルをすべてiCloudに保存: オフ(でないとiCloudがパンクする) -- High Sierra用
  • FileVaultディスク暗号化: オン(業務で使うなら私物であってもオンにすること)
  • 診断と使用状況: オフ
  • クリーンインストールが終わったらApp storeからシステムアップデートをかける

以上でクリーンインストールは完了。あとはひたすら環境設定

システム環境設定

Finder 環境設定(Finderで⌘+,

  • ハードディスクをデスクトップに表示
  • 新規Finderウィンドウで表示するデフォルトフォルダ: ダウンロード
  • サイドバーの表示項目を適当に調整(いらないものを非表示にする)
  • フォルダを新規ウィンドウではなくタブで開く: オフ
  • すべてのファイル名拡張を表示: オン
  • 名前で並べ替えるときにフォルダを上部に表示: オン

finder pref1

finder pref2

Finder 表示オプション(FinderでHDを開いて⌘+J)

  • 常にリスト表示で開く: オン
  • アイコンサイズとテキストサイズを調整

デスクトップアイコンの表示オプション(デスクトップアイコンを選択して⌘-J)

  • 項目の情報を表示: オン
  • アイコンサイズ、グリッド間隔、テキストサイズを適当に調整

グリッド間隔を変えないと、以下のディスク容量表示が途中で省略されてしまう。

Dock

  • Dockサイズを小さくする
  • 自動拡大: オン(ほどほどの拡大にした)
  • 画面上の位置: 左に変更
  • Dockを自動的に隠す: オン

セキュリティとプライバシー

  • スリープとスクリーンセーバの解除: 5分後

キーボード

  • キーのリピート: 速く
  • リピート入力時間: 短く
  • F1,F2などのすべてのキーを標準のファンクション キーとして使用: オン
  • 入力ソース: USと日本語のみにする
  • メニューバーに入力メニューを表示: オン
  • 修飾キー: [Caps Lockキー→Controlキー] にする(重要↓)

ショートカット

ショートカットは自分の好みで変更する。以下は自分の場合。

  • 次のウィンドウを操作対象にする: Option+Tab
  • MissionControlの操作スペース左右切り替え: ⌘+Shift+Control+[ or ]
  • その他不要なショートカットをすべてオフにする

トラックパッド

  • タップでクリック: オン(なぜかデフォルトでオフなので)
  • 軌跡の速さ: 速くする

アクセシビリティ

  • 一般: ズーム機能以外のショートカットをすべてオフにする
  • マウスとトラックパッド > トラックパッドオプション> ドラッグをオンにする: 3本指でドラッグ

すごく奥まったとこにある設定だけど、3本指でドラッグをオンにしないと超不便。

サウンド

  • メニューバーに音量を表示: オン

iCloud

  • iCloud: オン
  • キーチェーン: オン
  • Macを探す: オン

書類フォルダのiCloud同期はやめておいた。

共有

  • コンピュータ名をクリーンインストール前のと同じ名前に設定

ユーザーとグループ

  • ユーザーアイコンをカスタマイズ
  • ゲストユーザー: オフ

メニューバーの日付表示

  • 曜日を表示: オン
  • 日付を表示: オン

ソフトウェアとアプリのインストール

実際の手順は以下の順序よりもっと要領が悪かったので、今後のために整理した。

SIPの解除

TotalFinderを使うためにSIPの一部をオフにする作業。ただしSIPは原則オフにするべきではないので、リスクを十分に理解してから行うこと。

  • 電源起動時に、command + Rを押しっぱなしにする
  • OS X ユーティリティで[ターミナル]を実行
  • 以下を実行し、Macを再起動する
csrutil enable --without debug

追記: High Sierraではcsrutil disableでいったん無効にし、TotalFinderインストール後にcsrutil enableで有効にする。詳しくはマニュアルを参照

Homebrewのインストール

homebrewの指示どおりにインストールする。インストールスクリプトはちょくちょくアップデートされているのでここには貼らない。

なお、インストール後に以下を実行して自分用にggrepをインストールした(なくてもよい)。

brew tap homebrew/dupes
brew install homebrew/dupes/grep

Homebrewでインストール

homebrewについての説明は省略。Homebrewは最近置き場所などがいろいろ変わっているので、長く使っている人は注意。

せっかくなので、インストールするソフトウェアをなるべく絞り込んでからbrew installした。今回は以下のとおり。

brew install pyenv ansible rbenv rbenv-default-gems readline git git-flow tig mysql postgresql sqlite passenger nginx go v8 nodebrew vim mecab graphviz sshrc wget curl tree ggrep grc gmp peco memcached coreutils moreutils terminal-notifier htop-osx iproute2mac the_silver_searcher watch ccat multimarkdown tmux z

なお、最近のHomebrewは、XCode Command Line Toolsを自動でインストールしてくれるようになっていた。XCodeを使わない人がCommand Line Toolsをインストールしようとしてじたばたする必要がなくなったのが地味にありがたい。

以下は結果的に別途インストールした。

brew install openssl               # OpenSSLのインストール
brew link openssl --force
brew install homebrew/dupes/grep   # ggrepのインストール
brew tap homebrew/services         # MySQLとPostgreSQLの自動起動管理用

このhomebrew/servicesは今回知ったけど、すごく便利。

Rictyフォントのビルド

以下のようにRictyフォントをビルドしてインストールした。ターミナルフォントはRictyが好きなんです。

brew cask install xquartz 
brew install fontforge ricty
cp -f $(brew --cellar ricty)/*/share/fonts/Ricty*.ttf ~/Library/Fonts/
fc-cache -vf

ついでにNotoフォントをインストールした: 「Download All Fonts」をクリックして解凍し、Library/Fonts/にコピーするだけ。

追伸: 自分だけかもしれないけど、Rictyフォントはなぜか何回か微妙にビルドが失敗して特定の文字だけおかしくなったりした。rが~と表示されたり、iとjだけものすごく大きいフォントになったり。ビルドのたびに結果が異なっていたので、おかしいと思ったら再ビルドしてみるとよいかも。

アプリケーションのインストール

先にApp Storeで有料で購入したアプリを手動で再インストールし、次にそれ以外をbrew caskでインストールする、という順序が楽だと思う。

App Storeからインストール

  • App Storeを起動し、有料で購入したアプリのみ手動でインストールする

それ以外は次のcaskに送った。

ファイルメーカーやOfficeなどは正規のCDから取ったイメージでインストールした。

なお、Microsoft製品は作業前に完全にアンインストールしてライセンスを解放する必要があるかもしれない。今回は同じMacbookで再インストールしたせいかアンインストールなしでも問題は生じなかったが、別のMacbookにインストールする場合は事前にアンインストールしておくとよいかも。

Adobe製品でも同じようなことが起こる可能性がある(今回はReaderしかインストールしなかった)。

メモ: Keynoteについて

最近のMac OSではKeynoteがデフォルトでインストールされない。以下の手順に従えばほとんどの場合無料で正規に利用できるはず。

brew caskでインストール

最終的に以下のようなcaskリストでインストールした。

brew cask install 1password dash2 handbrake nvalt totalfinder adobe-air disk-inventory-x iexplorer opera vagrant adobe-reader docker iterm2 p4merge validator-sac alfred2 dropbox imagemagick itsycal rubymine virtualbox appcleaner firefox kindle sequel-pro vlc bettertouchtool flux kitematic slack xmind beyond-compare genymotion kiwix sourcetree xquartz blisk go2shell licecap sqlitebrowser cd-to google-chrome macdown sublime-text cyberduck google-japanese-ime mpeg-streamclip thunderbird

メジャーなMacアプリの多くはcask化されているので、brew caskでインストールしておくとbrew upgrade;brew cleanupで一括アップグレードできて便利。

必要なら、caskで1つ前のメジャーバージョンなどを指定してインストールすることもできる。

brew cask searchでアプリの全リストを取れるし、アプリ名を与えて部分一致で検索もできる。マイナーなアプリでもbrew tap <tap名>でtapを追加すると利用できたりするので、tapがあるかどうかググってみよう。

今後アプリをインストールする場合は、caskに見つかればそちらでインストールするようにしようと思う。

ホームディレクトリの復元

ドットファイルなどを何もかも復元すると環境の汚れまで持ち込まれるので、復元は最小限にとどめた。

今回はTimeMachineから以下を復元した。

  • .bashrc
  • .bash_profile
  • .bash_history
  • .heroku
  • .vimrc
  • .rbenv(わりとでかい)
  • .ssh/
  • .gitconfig
  • .git_ignore
  • .git_ignore_global

注意

.rbenv/以下にRubyをビルド&インストールしていた場合、OpenSSLやreadlineなどのライブラリとのリンクが失われている可能性がある。

その場合、rbenvでインストールしたRubyはすべて再ビルドが必要になるかもしれない。自分の場合も結局rbenvのRubyを削除して再ビルドした。

rbenv uninstall 2.3.3
rbenv install 2.3.3

ビルドインストールされる他のソフトウェアパッケージでも類似の作業が必要になるかもしれない。

アプリケーション設定の復元とカスタマイズ

ここから先は完全に人それぞれとなるので、役に立ちそうな点のみメモ。

自分の場合、重要なアプリはDropboxに設定を保存していたので、設定ファイルへのパスをシンボリックリンクに置き換えることでスムーズに置き換えられた。

Dropbox

1Passwordを使うために真っ先に復元。

1Password

アプリやサービスを使えるようにするために真っ先に復元。

Chrome

もろもろの作業で必要になるので真っ先に復元。プロファイル同期機能のおかげでほぼ世話いらず。

細かいけど、Sierraではdmgをマウントしてインストールした後、OSが「インストーラを片付けますか?」と聞くようになった。地味に便利。

Google日本語入力

  • キー設定: MS-IME
  • シフトキーでの入力切替: カタカナ
  • 文字の全角半角設定を調整(変換前と変換中の両方やること)

Dash

  • (買ったはずのライセンスが見当たらなかった...設定ファイル復元でうまくいかなかったのでライセンス再発行してもらった)

Applications Supportから設定を復元できるアプリ

以下を含むたいていのアプリは、~/Library/Application\ Support/以下にある設定ファイルをTimeMachineで復元できる。

  • Firefox
  • Safari
  • Opera
  • Cyberduck
  • ReadKit
  • iTerm2
  • Alfred -- Dropboxで同期していた設定を復元するには、有料のPowerPackを購入しておく必要がある。
  • BetterTouchTool
  • Sublime Text 3

なお、Dockerの場合は~/Library/Containers/com.docker.docker/以下にイメージファイルが置かれる(参考: Stackoverflow)。

RubyMine

TimeMachineから以下のファイル・フォルダを復元すれば完了。

  • 設定: ~/Library/Preferences/<PRODUCT><VERSION>
  • プラグイン: ~/Library/Application Support/<PRODUCT><VERSION>

参考: RubyMineの設定が保存されているディレクトリ

MySQLとPostgreSQLデータの復元と常時起動設定

brew tap homebrew/servicesが実行済みであることが前提。今回はなりゆきでTimeMachineで以下のデータディレクトリを復元したが、dumpから復元する方が後々楽

  • mysql: /usr/local/var/mysql/を復元する
  • postgresql: /usr/local/var/postgresを復元する

復元が正しければ、以下を順に実行するだけで、今後Macの起動時に自動で起動するようになる。従来のlaunchctlを使う方法よりずっと使いやすい。

brew services start postgresql
brew services start mysql

brew services listを実行すれば現在のステータスがわかる。servicesが複数形なのが地味に間違えやすい。

参考

brew pinで更新を止める

開発環境の場合、不意に更新されたくないデータベースソフトウェアなどをbrew pin <パッケージ名>でバージョン固定できる。今回は以下をピン留めした。

brew pin postgresql
brew pin mysql
brew pin imagemagick

これで多い日でも安心してbrew upgradeを実行できる。

フルバックアップ

最後はフルバックアップで締めくくると思うけど、セーフモード(Shiftキーを押しながら起動)にした状態でフルバックアップする方が余計なプログラムが動いていない状態なので早く終ると思う。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。