Mac Book Airを買い替えてメモリが4倍、ストレージも4倍、そしていつもの3倍の回転を加えれば、4800万パワーだーっ!!

どうもこんばんは、south37です。 タイトルにもある通り、新しくMac Book Airを買い替えました。

以前のPCはメモリが2GB,ストレージが64GBしか無かった為、常に残り容量が数GB(酷い時は数百MB)でVMも満足に立ち上がらず、chromeを使えばタブを数個開いただけでフリーズするという酷い有様でした。

耐えきれずスペックを上げた結果、お金は失いましたがこれでもかというほど幸せになりました。ただ、環境移行時にいろいろ問題が発生したのでメモがてらここに記録を残しておきます。

環境移行には「移行アシスタント」を使う

macには、「移行アシスタント」というPC乗り換えを簡単に済ませてくれる便利な機能があります。

[参考]http://support.apple.com/kb/HT4413?viewlocale=ja_JP

アプリケーションやフォルダやパスワード等まるっと移行してくれるのでこれで大丈夫っぽく感じるのですが、ちょいちょい問題が発生しました。

以下、対処しながらメモしたやつです。

問題1: Homebrewにpermissionのerrorが出るようになった。

brew installbrew doctor時にsudoが必要になった。sudoをつけないと、/usr/local以下のフォルダでいろいろエラーが出る。

原因

/usr/localフォルダ(および配下のフォルダ、ファイル)の所有者が、root:wheel(ユーザがroot、グループがwheel)になっていたのが原因。 Unixのデフォルトはroot:wheelで、Homebrewのinstall時に/usr/localroot:adminに、/usr/local以下のフォルダ群が(user名):adminに書き換えられる。ただ、移行アシスタントではこのへんの権限は引き継がれないっぽくてerrorになった。

[参考:Homebrewの使い方] http://www.maruko2.com/mw/Homebrew%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9

解決

ひたすらchownとchmod。ユーザとグループは/usr/local以下全部(username):adminにした。 実行権限はとりあえず/usr/local/bin/usr/local/share以下殆どを755にした。

sudo chown root:admin /usr/local
sudo chown -R (username):admin /usr/local/*
sudo chmod -R 755 /usr/local/share

ただし、例外はあり

/usr/local/share/man/whatisroot:admin

$ ll /usr/local/share/man/
total 88
drwxr-xr-x+    3 (username)  admin   102B  6 28 20:49 ja
drwxr-xr-x+  467 (username)  admin    16K  6 28 22:03 man1
drwxr-xr-x+ 1428 (username)  admin    47K  6 28 22:03 man3
drwxr-xr-x+   16 (username)  admin   544B  6 28 22:03 man5
drwxr-xr-x+   15 (username)  admin   510B  6 28 22:03 man7
drwxr-xr-x+    5 (username)  admin   170B  6 28 20:49 man8
-rw-r--r--+    1 root    admin    41K  6 22 14:15 whatis

この辺は、以前のPCの設定に合わせる様にした。

ちなみに、今回は自分でpermission書き換えたが、Homebrewを一度uninstallして入れ直す方が楽だったかもしれない。

問題2: Homebrewで入れたコマンドが使えなくなった。

rbenvとか使えなくなってた。どうやら、/usr/local/bin/*へ貼られていたシンボリックリンクが全部消えてるっぽい。実体は、ちゃんと/usr/local/Cellar/に残っていた。

解決

brew list -1 | while read line; do brew unlink $line; brew link $line; doneでformulaを片っ端からunlink&linkする事で解決。 ただし、いくつか

Unlinking /usr/local/Cellar/sqlite/3.8.4.1... 0 symlinks removed
Warning: sqlite is keg-only and must be linked with --force

というerrorが出た。 keg-onlyなやつは、--forceオプションをつけなければlinkできない仕様っぽい。sqliteは別にいらなかったのでuninstallした。

[参考] http://apple.stackexchange.com/questions/123900/is-there-a-quick-way-to-relink-my-homebrew-kegs

問題3: npmコマンドが使えない

/usr/local/share/npm/binが無くなっている。 npmでinstallしたコマンドが全部消えている。もともとは/usr/local/share/npm/bin以下に../lib以下の実体ファイルへのシンボリックリンクが格納してある形だったが、../lib以下のファイルもios-sim以外全部消えていた。

解決

残ってないものはしょうがないのでinstallし直す。 いい機会なので、nodeごと入れ直す事にする。nodebrewというのを試してみる。

[参考]http://qiita.com/somtd@github/items/bd413e89d2db22ab795e
[参考]https://github.com/hokaccha/nodebrew

nodebrew

install方法

公式ページに従って、install。

curl -L git.io/nodebrew | perl - setup

PATHを通す為に、.zshrcに以下を追記

export PATH=$HOME/.nodebrew/current/bin:$PATH

これでnodebrewはinstall完了。パッケージマネージャのnpmも入る。

npmで各種ライブラリをinstallする。

まず、以前使っていたライブラリを旧PCで確認。

$ ls /usr/local/share/npm/lib/node_modules
backbone          cordova           generator-karma   handlebars        jade              n
bower             express           grunt             ionic             jshint            node
coffee-script     generator-angular grunt-cli         ios-sim           mocha             yo

新PCで片っ端からinstallするが、一つずつnpm install -g (package名)とかやってられないのでshell scriptを書いた。

#/usr/bin/bash

TEXT='cordova           generator-karma   handlebars        jade              n
bower             express           grunt             ionic             jshint            node
coffee-script     generator-angular grunt-cli         ios-sim           mocha             yo'
for pkg in `echo $TEXT`
do
  npm install -g $pkg
done

chmod u+x install_npm_libraries.shで実行権限を与えてから、./install_npm_libraries.shで実行。

これでOK!!

問題4: suコマンドが使えない

原因

ただrootのパスワードを設定してなかっただけだった。

解決

sudo passwd root

で解決

問題5: pryが起動出来ない

pryというのはrubyの超強力なREPL。 pryコマンドを実行すると

Found plugin pry-remote, but could not require 'pry-remote'
dlopen(/Users/(username)/.rbenv/versions/2.1.1/lib/ruby/2.1.0/x86_64-darwin13.0/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib
  Referenced from: /Users/(username)/.rbenv/versions/2.1.1/lib/ruby/2.1.0/x86_64-darwin13.0/readline.bundle
  Reason: image not found - /Users/(username)/.rbenv/versions/2.1.1/lib/ruby/2.1.0/x86_64-darwin13.0/readline.bundle
Sorry, you can't use Pry without Readline or a compatible library.
Please `gem install rb-readline` or recompile Ruby --with-readline.
/Users/(username)/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': dlopen(/Users/(username)/.rbenv/versions/2.1.1/lib/ruby/2.1.0/x86_64-darwin13.0/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib (LoadError)
  Referenced from: /Users/(username)/.rbenv/versions/2.1.1/lib/ruby/2.1.0/x86_64-darwin13.0/readline.bundle
  Reason: image not found - /Users/(username)/.rbenv/versions/2.1.1/lib/ruby/2.1.0/x86_64-darwin13.0/readline.bundle

みたいなエラーが出た。

解決

readlineが無かったのが原因。 brew install readlineで解決! 6.3.6がinstallされた。(06/25/2014時点)

問題6: rbenvでrubyのinstallがこける

Build errorが出る。

rbenv install 2.1.2
Downloading ruby-2.1.2.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/f22a6447811a81f3c808d1c2a5ce3b5f5f0955c68c9a749182feb425589e6635
Installing ruby-2.1.2...

BUILD FAILED

Inspect or clean up the working tree at /var/folders/4f/0xjqp67d6b755dwmfvbdl5l80000gn/T/ruby-build.20140625091642.12970
Results logged to /var/folders/4f/0xjqp67d6b755dwmfvbdl5l80000gn/T/ruby-build.20140625091642.12970.log

Last 10 log lines:
/var/folders/4f/0xjqp67d6b755dwmfvbdl5l80000gn/T/ruby-build.20140625091642.12970/ruby-2.1.2 /var/folders/4f/0xjqp67d6b755dwmfvbdl5l80000gn/T/ruby-build.20140625091642.12970 ~/Documents/programs/intern/wantedly/projects/wantedly
checking build system type... x86_64-apple-darwin13.2.0
checking host system type... x86_64-apple-darwin13.2.0
checking target system type... x86_64-apple-darwin13.2.0
checking for gcc-4.2... gcc-4.2
checking for gcc... (cached) gcc-4.2
checking whether the C compiler works... no
configure: error: in `/var/folders/4f/0xjqp67d6b755dwmfvbdl5l80000gn/T/ruby-build.20140625091642.12970/ruby-2.1.2':
configure: error: C compiler cannot create executables
See `config.log' for more details

BUILD FAILED

Inspect or clean up the working tree at /var/folders/4f/0xjqp67d6b755dwmfvbdl5l80000gn/T/ruby-build.20140625091642.12970
Results logged to /var/folders/4f/0xjqp67d6b755dwmfvbdl5l80000gn/T/ruby-build.20140625091642.12970.log

Last 10 log lines:
checking build system type... x86_64-apple-darwin13.2.0
checking host system type... x86_64-apple-darwin13.2.0
checking target system type... x86_64-apple-darwin13.2.0
checking for gcc-4.2... gcc-4.2
checking for gcc... (cached) gcc-4.2
checking whether the C compiler works... no
configure: error: in `/var/folders/4f/0xjqp67d6b755dwmfvbdl5l80000gn/T/ruby-build.20140625091642.12970/ruby-2.1.2':
configure: error: C compiler cannot create executables
See `config.log' for more details
make: *** No targets specified and no makefile found.  Stop.
  1.54s user 1.63s system 22% cpu 14.320 total

原因

xcode command line toolsが入ってないだけだった。 (brew doctorしてもerrorとして表示されないから発見が遅れた) ちなみに、xcode command line toolsで入るのはmakeとかg++とかビルドに必要ないろいろ。

[参考]http://d.hatena.ne.jp/agw/20120730/1343711730

解決

xcode-select --installxcode command line toolsをinstallすると、ビルド出来る様になった!

[参考]http://qiita.com/tanakahisateru/items/c0eaa25dbde669b282cb

問題7: terminalからvagrantコマンドがたたけなくなった。

/Applicatoin以下にはVagrantフォルダが残っているのに、/usr/binからはvagrantが消えている。

解決

とりあえず一度/Application/Vagrantを消してから、再び https://www.vagrantup.com/downloads から最新版(1.6.3)をインストールした。これでOK!!

まとめ

大体はHomebrewとxcode command line tools関連の問題でした。他の人の報告例もあるので、移行アシスタントを使う時はこの二つに気をつける必要があるっぽいです。

[参考: macの移行アシスタントで移行できなかったもの] http://qiita.com/fumikony/items/5702d650218624344759

皆さんも新しいPCに乗り換えて幸せになりましょう。

どうでも良い話

既にお気づきかと思いますが、タイトルはキン肉マンウォーズマン理論ネタです。個人的にゆで理論はツボだったりします。