操作系统升级后,无法在OSX El Capitan上启动NodeJS应用程序(Appium)

所以我有一段触发Appium的.Net代码,它是一个在Mac OS上运行的NodeJS应用程序。 它曾经在优胜美地工作,但在XCode和El Capitan更新后停止工作。 我正在尝试运行下面的命令作为代码的一部分:

ssh.RunCommand("/usr/local/bin/forever start /Applications/Appium.app/Contents/Resources/node_modules/appium/bin/appium.js --address 0.0.0.0 --port 4723 --log-level debug --device-name \"iPhone 6\" --platform-name iOS --platform-version \"8.4\" --app \"/Applications/my.app\" --browser-name iOS -l --log /Library/Logs/Appium/current.log"); 

而且我正在Visual Studio中获得“env:node:No such file or directory”

 System Policy: deny file-write-data /usr/bin/env 

在system.log我猜OS X不允许我访问/ usr / bin / env了,有什么办法可以绕过吗? 干杯!

这确实是由El Capitan的系统完整性保护(SIP)造成的,但是另一个回答是错误的,因为他们声明/usr/local仍然是可写的,或者您可以重新获得永久访问权限。

每次我安装一个新的程序时,这完全混淆了我的homebrew程序安装,而且我必须至less每周一次chown -R username /usr/local 。 SIP有一些不同的命令行参数,可以将其完全禁用(我当然正在考虑这样做),或者只禁用它的一部分。

请注意,禁用/启用/修改系统完整性保护必须在单用户模式下进行,方法是通过按住Cmd+R重启进入恢复模式,然后启动根terminal并执行csrutil命令,该命令需要多个参数,即disableenable ,还有一些参数,这些参数只能部分禁用特定事物的SIP(在csrutil --help对话框中没有说明)。 您还需要重新启动才能使设置生效。

El Capitan增加了一个名为系统完整性保护或“SIP”的东西。 即使您是root用户,“SIP”也会阻止您在/usr写入数据。 但是, /usr/local仍然可用,这就是您的应用程序正在尝试执行的操作。 但机会是/usr/local不存在或者您没有适当的权限。

如果/usr/local已存在,请运行:

sudo chown -R $(whoami):admin /usr/local

否则,按照这个: https : //github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md