Brewfileを使った新Mac移行手順


基本は各種サイトを調べたが、欲しい情報が網羅的にまとまっていなかったり一部情報が古くなっていたので、備忘録を兼ねてまとめてみた。

環境

OS 型式
移行元 Sierra MBA Mid 2012
移行先 Sierra MBP 2016

手順

Brewfile

参考:Macで自動環境構築&バックアップ(App Storeも)

common

移行元・移行先両方でbrew/brew-fileコマンドが使えないとだめ。

  1. Homebrewをinstall
  2. brew-fileをinstall
$brew install argon/mas/mas
$brew install rcmdnk/file/brew-file

移行元

$brew-file init
Do you want to set a repository (y)? ((n) for local Brewfile). [y/n]: y
Set repository, "non" for local Brewfile,<user>/<repo> for github repository,
or full path for the repository: non

initではGithubリポジトリと連携する場合に"non"以外の文字列を入れるが、
一度リポジトリを設定してしまうと、変更は$brew-file set_repoでできるものの、削除はできない様子

自分は間違えてlocal pathを入れてしまい、$brew-file set_repoで"non"と答え直してBrewfileを生成できたが、
再度$brew-file initをしても最初に入力したpathを探されて困った。

=> こちら修正されました(コメント欄参照)

cask系は$brew cask install [app-name]ではなくGUI(dmgファイル)で既に導入済みの場合、Brewfileには含まれないため、必要なら手動で打ち込む。

移行先

SafariでGithubにあげたBrewfileをコピペで新Macの~/.brewfile/Brewfileに配置したら、

$brew file install

をTerminalで実行する。
この時brew caskでinstallする予定のもの(例えばChromeやiTermなど)を先に入れているとError: It seems there is already an App at '/Applications/iTerm.app'.のようにエラー終了するので注意。

=> 先にinstall済みでも再installして上書きする仕様になりました(コメント欄参照)

※appstoreでinstall予定のアプリは、既に入っていてもWarningで流してくれるので問題ない。

確認事項

各種PATHに注意

例えばbrew経由でnpmを入れた場合(nodejsを入れると一緒についてくる場合もある)、PATHに注意が必要となる。

$node --version
10.8.0
$npm root -g
/usr/local/Cellar/node/10.8.0/lib/node_modules

この状態だとnpm install -g <module>をしても上記のPATHのnode_modulesに入り、その際に貼られるsymbolic linkは/usr/local/Cellar/node/10.8.0/bin/で、通常のshellのPATHは通っていない所にinstallされてしまう。

その場合、PATHにCellar以下を加えるか、npm rootを変えて既にPATHに含まれる場所を指定すれば良い。

$npm set prefix /usr/local
$npm root -g
/usr/local/lib/node_modules

他に新環境でやっておきたいこと一覧

iterm2

参考:iTerm2の設定をインポート・エクスポートする方法

Dropboxに移行前のitermの設定をSaveし、
移行後PCでDropboxにログインしてload(フォルダ指定時にSaveするか聞かれるが、デフォ設定で上書かないようcancel)

imgcatとか有用なコマンドもできればBrewfileで書けると嬉しいけれど。

$wget -O /usr/local/bin/imgcat https://raw.githubusercontent.com/gnachman/iTerm2/master/tests/imgcat
$chmod 755 /usr/local/bin/imgcat

Clipy

クリップボードとスニペットを管理するアプリ
クリップボード拡張Macアプリ「Clipy」を公開しました
Sierra対応できていないClipMenuの高機能代替

スニペットがimport/export可能なので、Dropbox経由で移行可能

入力ソース

日本語は確定を一発でしたいので、[キーボード]->[入力ソース]->[Windows風のキー操作]にチェック。
ライブ変換に慣れてきたのでデフォの日本語と、
cask google-japanese-imeで英数を利用

......しようとしたが、デフォのU.S.が消せない(以前はデフォの日本語を含めてれば消せたはずだが)

=> Macで入力ソースにいつの間にかU.S.が入ってきて消せない時の対処法の手順で解決しました!

chrome

chromeの設定でアカウントによる同期ができる。
「開いているタブ」など、ほぼ何でも同期可能。

履歴の同期だけはチェックを外し、
ブクマも移行先では同期後いくらか削除。
再ログインのタイミングで同期するか否か問われるので、最初だけ同期して後の差分は無視可能。自作ポエムは移行させない。

移行アシスタント

プリンター設定などを引き継ぐなら使う。

起動音の無効化

新型MacBook Proの場合、起動音が廃止されたため気にしなくてよい。

Early 2016以前のモデル

起動音の無効化は、実は根本解決が難しい。
下記記事が詳しい。

移行前ではMuteConというアプリを使っていたが、
これはログアウト時に音量を0に、ログイン時に音量を元に戻すという単純なものだ。
LoginHook/LogoutHookにその仕掛けを入れれば、アプリ無しで自前実装できる。
ex, https://github.com/teored90/nobootsound

ただこれだけだと、異常終了したりイヤホンなど繋いだまま終了したりすると、起動音が復活してしまう。

ググるとMacの環境値をいじる方法も見つかるが、OSのversion&ハード毎に変更値が異なり、変更しても動作が不安定なためオススメしない。

# 初期値確認(Sierra(10.12.5)&Early 2016の場合)
$nvram SystemAudioVolume
SystemAudioVolume   7
# cf. El Capitan(10.11.6)&Late 2013だと'>'

# 変更方法
$sudo nvram SystemAudioVolume="%80"
# 駄目なら%00, %01を試す

3本指でのトラックパッド操作

移行前のMacでは3本指でウィンドウをドラッグし、ブラウザを掴んで動かしたり上下左右に広げていた。

新Macの[システム環境設定]->「トラックパッド」にはそれらしい設定が見つからないが、
[システム環境設定]->[アクセシビリティ]->[マウスとトラックパッド]->[トラックパッドオプション]で「ドラッグを有効にする」にチェックからの「3本指でドラッグ」で有効になる。

ブルーライトカット

f.luxユーザーが多いと思うが、[システム環境設定] -> [ディスプレイ]のカラーのプロファイルやNightShiftでも可能

apache

brew tap homebrew/apacheでもいいが、ここではOS X標準のapacheを使う

以下、特定ディレクトリ(~/Sites/)以下のファイルにlocalhost:80でアクセスするための設定(Sierra/High Sierra/Mojaveで検証済)

  • ユーザーディレクトリの有効化
    • 下記のコメントアウトを外す
    • phpを利用したい場合はphp7_module(Sierraなど古いとphp5_module)を含む行のコメントアウトも外す
$sudo vim /etc/apache2/httpd.conf
...
#LoadModule userdir_module libexec/apache2/mod_userdir.so
...
#Include /private/etc/apache2/extra/httpd-userdir.conf
...
  • /etc/apache2/extra/httpd-userdir.confの下記コメントアウトを外す
    • /etc/private/etcは同じinodeなので/private/etc/apache2/extra/httpd-userdir.confを修正してもOK
$sudo vim /etc/apache2/extra/httpd-userdir.conf
#Include /private/etc/apache2/users/*.conf
  • 独自モジュールを追加できるようになったので、開放したいディレクトリを指定して再起動
$sudo vim /private/etc/apache2/users/`whoami`.conf
<Directory "/Users/darai0512/Sites/"> # s/darai0512/`whoami`/
  AllowOverride All
  Require all granted
</Directory>
# 以下は不要(特定のファイルアクセス時にヘッダーを追加する設定)
<FilesMatch "\.(mjs)$">
  Header set Content-Disposition attachment
</FilesMatch>
$sudo apachectl restart
  • 確認
$mkdir /Users/`whoami`/Sites
$echo 'work!' > ~/Sites/index.html