操作系统升级后,无法在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
命令,该命令需要多个参数,即disable
和enable
,还有一些参数,这些参数只能部分禁用特定事物的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
- SignalR客户端应用程序在Mac上
- 将通知从Web服务器推送到winforms客户端应用程序
- AES在.NET中encryption并使用Node.jsencryption解密?
- Docker容器Windows + Node.js + .NET
- 将轻量级Web服务器embedded到.net应用程序(node.js)中?
- Assembly :: GetExecutingAssembly() – > Location现在抛出ArgumentException:path中的非法字符
- ASP.NET MVC,Node.JS. 他们可以互动吗?
- 在.net中将二进制32位IEEE-754浮点数转换为Double
- SocketIoClientDotNet – Socket.IO客户端库有时会发出两个连续的事件,有时不会