关于 OSX 升级到 EI Captain 的解决方案
昨天把 OSX 升级到了 EI Captain,然后就遇到了各种奇怪问题。
刚开始只是发现 QQ 变成英文了 => 没问题,重新安装了一遍好了…
然后下午发现 Sequel 连接不到远程服务器,发现是 ssh 无法使用公钥的问题,删除
~/.ssh/known_hosts
(已经提前备份)后,发现还是不可以,重装后依然不行。最后下载了更高版本的 Sequel 没问题了…后来要更新 blog 的时候,发现 ruby 不能使用,( 因为 blog 使用的是 Octopress ),ruby 各种报权限不足的 Error,什么鬼?
查看了下 EI Captain 的更新说明,原来是Rootless
惹的祸:
一句话总结,即使是 root 用户,将无法对以下路径有写和执行权限:
1 | /System |
只有 Apple 自身签名的软件(含命令行工具)可以。
尝试关掉Rootless
:
1 | gavin:octopress gavin$ sudo nvram boot-args="kext-dev-mode=1 rootless=0";sudo reboot |
重启后依然不行,再更新下 CommandLine Tool,新版本的 XCode 竟然把之前的 CommandLine Tool 删除了,从官网下载后进行了安装。
然后自定义 GEM_HOME:
1 | #Add For Custom Ruby |
1 | gavin:octopress gavin$ gem update |
Success!
brew 也受到了影响,把/usr/local 的权限设置成 755
,并重新 update
update 过程中会报错:brew update failure while executing git checkout
执行以下命令:
1 | $ cd `brew --prefix` |
新机制 Rootless 出现后,很多软件安装都不能放到/usr
下了,重新改变软件路径就可以了。
[参考资料]