El Capitanにアップグレードして、SourceTreeのgitがエラーになった
先日、YoseimiteからEl Capitanにアップグレードしました。んで、しばらく気がつかなかったんですが、SourceTree上でgit-svnしてたリポジトリをpushしようとしたら、エラーになることに気がつきました。
いつものシンボリックリンクを張り直しでは上手くいかない。ln -sでエラー
いつものシンボリックリンクを張れば解決する件かと思いきやlnコマンドがエラーになってしまう。
いつものやつ:Solved: OS X Yosemite git svn broken
エラーは「 Operation not permitted.」
原因はEl Capitanから搭載されたSIP/rootless
んでよくよく調べていたら、こんな情報が。El CapitanからSIPというセキュリティ機能が搭載されたらしい。無知でした。 http://qiita.com/riocampos/items/525ec4b35744ad586c5a
引用元: HomebrewはEl Capitanへアップグレードする前に入れておく
米国時間 2015/9/30 から提供され始めた OS X 10.11/El Capitan では、新しいセキュリティである System Integrity Protection (SIP、別名 rootless)が動作しています。 SIP/rootless に関しては、末尾に解説記事などの参考リンクを列挙しておきます。簡単に言えば、 SIP/rootless の管理範囲内には特殊なフラグ(EA (Extend Attribute)、lsでは-l@で存在が確認出来る)が立っており、それにより動作の許可/制限が行われるようです。 このため、SIP/rootless の管理範囲内である /System, /bin, /sbin, /usr だとユーザは ( sudo したとしても)作業することが出来ないようです。 Homebrew が使う /usr/local 以下はいちおう SIP/rootless の管理範囲外なのですが、 /usr で新規ディレクトリが作れないので、 El Capitan では通常のログイン状況からだと /usr/local ディレクトリを作ることが出来なくなっています(csrutil コマンドで SIP/rootless を外しておくことも出来るが、セキュリティ的に好ましくない)。
そういうわけで、HomebrewはEl Capitanへアップグレードする前に入れておくを参照して、csrutilのところだけを参考にしました。
* command + Rを押しながら、再起動。起動時のAppleロゴが表示されたら手を離す
ターミナルを起動し、csrutil disableを実行
これで無事、SourceTreeのgit-svnが使えるようになりました。