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 install
やbrew doctor
時にsudoが必要になった。sudoをつけないと、/usr/local
以下のフォルダでいろいろエラーが出る。
原因
/usr/local
フォルダ(および配下のフォルダ、ファイル)の所有者が、root:wheel
(ユーザがroot
、グループがwheel
)になっていたのが原因。
Unixのデフォルトはroot:wheel
で、Homebrewのinstall時に/usr/local
がroot: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/whatis
はroot: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 --install
でxcode 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に乗り換えて幸せになりましょう。