svn 终端更新遇到的问题

 

之前在虚拟机的windows 里装过 tsvn,每次更新都要切换到 windows 里,而且同一个主机下两个项目不同用户名只能保存一个,更新另一个就报错,装了alfred+iterm之 后,觉得用起来很爽,于是打开终端敲命令:

carlxu@MacBook-Pro:~$ svn up .
svn: E155036: Please see the 'svn upgrade' command
svn: E155036: The working copy at ''
is too old (format 29) to work with client version '1.9.4 (r1740329)' (expects format 31). You need to upgrade the working copy first.

报这个错,搜索了一下原因是自带的 svn 版本过低,于是想着升级 svn,因为之前装过 brew,运行如下命令安装新的 svn

brew install svn

在/usr/local/bin下安装好了,但是 svn –veision 发现,怎么还是1.7版本

cd 到/usr/local/bin下再看版本,新装的是1.9.4,原来 PATH 里优先取/usr/bin的 svn

于是尝试将 /usr/local/bin/svn 重新复制到/usr/bin/中去

sudo cp -f svn /usr/bin/

然而出现了权限问题:

cp: /usr/bin/svn: Operation not permitted

搜索之后发现,是El Capitan 加入了Rootless机制,不再能够随心所欲的读写很多路径下了。设置 root 权限也不行。

Rootless机制将成为对抗恶意程序的最后防线

于是尝试关闭 Rootless。重启按住 Command+R,进入恢复模式,打开Terminal。

csrutil disable

重启即可。如果要恢复默认,那么

csrutil enable
附录:

csrutil命令参数格式:

csrutil enable [–without kext | fs | debug | dtrace | nvram][–no-internal]

禁用:csrutil disable

(等同于csrutil enable –without kext –without fs –without debug –without dtrace –without nvram)

其中各个开关,意义如下:

  • B0: [kext] 允许加载不受信任的kext(与已被废除的kext-dev-mode=1等效)
  • B1: [fs] 解锁文件系统限制
  • B2: [debug] 允许task_for_pid()调用
  • B3: [n/a] 允许内核调试 (官方的csrutil工具无法设置此位)
  • B4: [internal] Apple内部保留位(csrutil默认会设置此位,实际不会起作用。设置与否均可)
  • B5: [dtrace] 解锁dtrace限制
  • B6: [nvram] 解锁NVRAM限制
  • B7: [n/a] 允许设备配置(新增,具体作用暂时未确定)

 

发表评论