い つ も の
恒例のmac OSアップデート後のトラブル解決まとめです。
随時更新していきます。
エラー集
homebrewが動かない
brew updateで以下のエラーがでる。
tree-no-iMac:study-hugo tree$ brew update xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun Stashing your changes: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun Error: Failure while executing: git stash save --include-untracked --quiet
原因はXcode7とCommand Line Toolsがインストールされていないため。
Xcode
App StoreからXcode7をインストール。(3.9G程度あるため非常に時間がかかる)
Xcode7用Command Line Tools
- Xcodeを起動。
- メニューバー
- Open Developer Tools
- More Developer Tools...
- ログイン(iCloudのID/PASS)
- Command Line Tools OS X 10.10 for Xcode 7の+ボタンをクリック
- Command_Line_Tools_OS_X_10.10_for_Xcode_7.dmg をDL +インストール
インストール後、brew updateする。
tree-no-iMac:study-hugo tree$ brew update Error: The /usr/local directory is not writable. Even if this directory was writable when you installed Homebrew, other software may change permissions on this directory. Some versions of the "InstantOn" component of Airfoil are known to do this. You should probably change the ownership and permissions of /usr/local back to your user account. sudo chown -R $(whoami):admin /usr/local
しかしエラーになる。末尾に「sudo chown -R $(whoami):admin /usr/local」というコマンド実行してねー、と書かれてるので、
sudo chown -R $(whoami):admin /usr/local
これを実行する。この後に brew updateで、ようやく成功。
ちなみに「You should probably change the ownership and permissions of /usr/local back to your user account.」と言われたのは、El Captanアップグレード後に、/usr/localのユーザ:グループの設定が変わってしまった(と思われる)ため、sudoが無いと触れないから、sudoなくても実行できるように「sudo chown -R $(whoami):admin /usr/local」してねー、と言っているのかと思われます。
hugo
「brew install hugo」でインストールしたhugoが起動しません。正確には、実行はできるが処理が全く進まない感じです。
前述のhomebrewの問題後にbrew uninstall hugo -> brew install hugoしたら起動できるようになった。(再インストール不要かも)
/usr/配下にあったフォルダがごっそりなくなってる
例えば私の場合はvagrant(Vagrantfileとか)・各ミドルウェアのシンボリックリンク等を /usr/直下 に置いてたのですが、El Capitanにアップしたらごっそり消えていて卒倒しました。
慌ててfindしたら以下に自動的に移動されてました。死ぬかと思いました。
tree-no-iMac:usr tree$ sudo find / -name "vagrant" -type d /Library/SystemMigration/History/Migration-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/QuarantineRoot/usr/vagrant
未解決
Safari + SIMBLGesture
Safari起動後、環境設定からGesturesが消えています。調査中。
cooviewer
cooViewer
フルスクリーンモードを設定した状態で実行しても画面に何も表示されません。
cooviwer起動 -> メニューバー -> ウインドウ -> フルスクリーンのチェックを外す
で表示されるようになります。フルスクリーンの仕様が変わったのかもしれません。cooviewerはここ数年更新されていないので、El Capitan対応は期待できないかもしれないので、フルスクリーンモードの運用は諦めて、ウインドウサイズをギリギリまで広げて運用するしかなさそうです。
rootlessと/usr/localについて
linuxの作法的に、tomcat等のミドルウェアは /usr/local 配下に配置されたりしますよね。El Capitanになって/usrがrootlessになってしまったので、今後は配置できません。だとすると、今後はどこに配置するのが適切なのでしょう?/varも今はrootless対象外ですが、いつ対象になってもおかしくない気もするので、/optくらいしか代替ディレクトリが思いつきません。この辺どうするのがmacの作法的に正しいのでしょうね?
↑これは勘違いしてました。/usr/local配下に全く触れなくなると思ってたのですが、違いました。
rootlessは、「/usr直下」に対してプロテクションが働きますが、/usr/local だけは例外的にプロテクトは及ばないようになっているので、権限さえ正しければ今まで通りに/usr/localを使用できます。(brew updateの失敗はOSアップグレード後の/usr/local配下の権限の問題と思われる)
/usr配下にsudoでディレクトリ・ファイルを作成して失敗する例
/usr/local自体は最初から存在しますが、El Capitanアップグレード前に/usr/localを誤って削除してしまった場合、例えば「sudo mkdir /usr/local」としようとしても、rootlessが働いて/usr/localの作成ができなくなるぞ!、というのがネット上で騒がれている問題ですね。Yosemiteの時にやった/usr/localを一時的に/tmp等にフォルダごと退避する等をやってしまうと、/usr/localをアップグレード後に作成できなくなり、面倒が起こる(リカバリーモードで起動後にrootlessを一度無効にして/usr/localを作成してrootlessを有効にする手順が必要になる)、という事ですね。
このrootlessにより、私は例えばtomcatの場合は /usr/loca/apache-tomcat8.x.x みたいに実体を置いて、/usr/tomcat にシンボリックリンクを貼るのを慣例としていたのですが、これがNGになります。
気づいた点
Safari v9
v8まではCommand + 数字でタブを選択しようとするとブックマークのn番目が選択されてしまっていましたが、v9からはCommand + 数字で対応するタブが選択できるようになっています。
スワイプしてブラウザバックした後に、操作を受け付けるようになるまで時間が短縮され、割りとすぐ操作できるようになったように感じます。
Mission Control
私の環境は iMac Retina 5K 27インチ なのですが、YosemiteのMCは非常にカクついて重かったです。
El Capitanにアップグレード後、MCが無茶苦茶軽くなり、ヌルヌル動作するようになりました。次元が違う動きになってます。