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] 允许设备配置(新增,具体作用暂时未确定)

 

作者: Carlxu

Carlxu Tag:90后、早熟、职业经历丰富、终身成长。 新进医疗行业的前程序员,现任职于某省级医疗机构信息中心。 早熟:3岁学前班、15岁上大学、23岁硕士毕业,24岁成家。 职业经历丰富:6年换了4份工作,体验了国企、民企、机关、事业单位的工作方式,拥有市级-省级-国家级机关内的工作经历。 读书成家早,那是听从家人安排。跳槽多,那是缺少职业规划。31岁这年,我成了两个娃的爸爸。 今后,我将和“大橙小原”一起,不断习得新技能、在一个领域深耕、为自己的选择负责,终身成长为更好的自己。 感谢您对我的关注,很高兴能认识您! 让我们携手同行,体验未知世界的精彩。

发表评论