watchman:加载共享库时出错:libpcre.so.1
watchman: error while loading shared libraries: libpcre.so.1
我在 Ubuntu 15.10 上,我正在使用 react-native (0.20.0) 开发 Android (SDK 23) 应用程序。我正在使用节点 5.6.0 和 npm 3.6.0。
我在 运行ning react-native start
时遇到 watchman 错误
ERROR watchman--no-pretty get-sockname returned with exit code 127 watchman:
error while loading shared libraries: libpcre.so.1: cannot open shared object
file: No such file or directory
at ChildProcess.<anonymous> (/home/rachael/Dev/InstaGo/node_modules/fb-watchman/index.js:198:18)
at emitTwo (events.js:100:13)
at ChildProcess.emit (events.js:185:7)
at maybeClose (internal/child_process.js:827:16)
at Socket.<anonymous> (internal/child_process.js:319:11)
at emitOne (events.js:90:13)
at Socket.emit (events.js:182:7)
at Pipe._onclose (net.js:471:12)
当我 运行 sudo find / -name libpcre.so.1
返回以下内容时:
/home/rachael/.linuxbrew/lib/libpcre.so.1
/home/rachael/.linuxbrew/Cellar/pcre/8.38/lib/libpcre.so.1
我试过重新安装守望者:
make uninstall
git clone https://github.com/facebook/watchman.git
cd watchman
git checkout v4.1.0 # the latest stable release .
/autogen.sh
./configure
make
sudo make install
我也用 linuxbrew 试过了:
npm r -g watchman
brew update && brew upgrade
brew install watchman
给出了完全不同的错误:
A non-recoverable condition has triggered. Watchman needs your help!
The triggering condition was at timestamp=1407695600: inotify-add-watch(/my/path) -> Cannot allocate memory
All requests will continue to fail with this message until you resolve
the underlying problem. You will find more information on fixing this at
https://facebook.github.io/watchman/docs/troubleshooting.html#poison-inotify-add-watch
针对此问题的 Facebook 故障排除页面非常模糊,我也无法解决该错误。
我对此很陌生,所以如果您能就此问题提供任何帮助,我将不胜感激。谢谢你的时间。
更新
通过 linuxbrew 安装 watchman。
使用 linuxbrew 时,请记住在安装任何公式之前包含以下命令:
export PATH="$HOME/.linuxbrew/bin:$PATH"
export MANPATH="$HOME/.linuxbrew/share/man:$MANPATH"
export INFOPATH="$HOME/.linuxbrew/share/info:$INFOPATH"
brew update && brew upgrade
然后安装最新版本的守望者:
brew install --HEAD watchman
然后增加 inotify 用户实例、用户观察和排队事件的数量:
echo fs.inotify.max_user_instances=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
echo fs.inotify.max_queued_events=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
现在守望者应该工作了,react-native start
应该 运行 没问题!
您发布的第一个问题是与 ldconfig 相关的问题;由于 pcre 二进制文件未安装在系统库路径中,您的运行时 linker 无法在运行时解析它们,因此无法启动 watchman 二进制文件。
我无法帮助您直接解决那部分问题,但听起来您尝试的后续步骤让您处于更好的位置。
请注意守望者当前发布的版本是4.5.0;您遵循的指示已过时(您能告诉我您是在哪里找到这些指示的吗?)
https://facebook.github.io/watchman/docs/install.html 始终具有当前信息。
现在,关于中毒问题:
您看到的错误消息包括(损坏,抱歉!)link 到 https://facebook.github.io/watchman/docs/troubleshooting.html#poison-inotify_add_watch,其中对正在发生的事情有一些解释。
您需要阅读有关正确设置系统限制的部分:
https://facebook.github.io/watchman/docs/install.html#system-specific-preparation
完成后,您可以通过 运行 watchman shutdown-server
清除状态
有帮助吗?我想了解您发现其中哪些部分含糊不清,以便我可以为其他人改进它!
关于完全不同的错误。
你已经有守望者 运行ning,所以当你这样做时 react-native start
它会尝试启动另一个。
- 第一个运行
watchman shutdown-server
- 再次打开模拟器
- 在终端中调用
react-native start
- 在模拟器中打开您的应用。
一切正常。它对我有用。
我在 Ubuntu 15.10 上,我正在使用 react-native (0.20.0) 开发 Android (SDK 23) 应用程序。我正在使用节点 5.6.0 和 npm 3.6.0。
我在 运行ning react-native start
ERROR watchman--no-pretty get-sockname returned with exit code 127 watchman:
error while loading shared libraries: libpcre.so.1: cannot open shared object
file: No such file or directory
at ChildProcess.<anonymous> (/home/rachael/Dev/InstaGo/node_modules/fb-watchman/index.js:198:18)
at emitTwo (events.js:100:13)
at ChildProcess.emit (events.js:185:7)
at maybeClose (internal/child_process.js:827:16)
at Socket.<anonymous> (internal/child_process.js:319:11)
at emitOne (events.js:90:13)
at Socket.emit (events.js:182:7)
at Pipe._onclose (net.js:471:12)
当我 运行 sudo find / -name libpcre.so.1
返回以下内容时:
/home/rachael/.linuxbrew/lib/libpcre.so.1
/home/rachael/.linuxbrew/Cellar/pcre/8.38/lib/libpcre.so.1
我试过重新安装守望者:
make uninstall
git clone https://github.com/facebook/watchman.git
cd watchman
git checkout v4.1.0 # the latest stable release .
/autogen.sh
./configure
make
sudo make install
我也用 linuxbrew 试过了:
npm r -g watchman
brew update && brew upgrade
brew install watchman
给出了完全不同的错误:
A non-recoverable condition has triggered. Watchman needs your help!
The triggering condition was at timestamp=1407695600: inotify-add-watch(/my/path) -> Cannot allocate memory
All requests will continue to fail with this message until you resolve
the underlying problem. You will find more information on fixing this at
https://facebook.github.io/watchman/docs/troubleshooting.html#poison-inotify-add-watch
针对此问题的 Facebook 故障排除页面非常模糊,我也无法解决该错误。
我对此很陌生,所以如果您能就此问题提供任何帮助,我将不胜感激。谢谢你的时间。
更新
通过 linuxbrew 安装 watchman。
使用 linuxbrew 时,请记住在安装任何公式之前包含以下命令:
export PATH="$HOME/.linuxbrew/bin:$PATH"
export MANPATH="$HOME/.linuxbrew/share/man:$MANPATH"
export INFOPATH="$HOME/.linuxbrew/share/info:$INFOPATH"
brew update && brew upgrade
然后安装最新版本的守望者:
brew install --HEAD watchman
然后增加 inotify 用户实例、用户观察和排队事件的数量:
echo fs.inotify.max_user_instances=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
echo fs.inotify.max_queued_events=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
现在守望者应该工作了,react-native start
应该 运行 没问题!
您发布的第一个问题是与 ldconfig 相关的问题;由于 pcre 二进制文件未安装在系统库路径中,您的运行时 linker 无法在运行时解析它们,因此无法启动 watchman 二进制文件。
我无法帮助您直接解决那部分问题,但听起来您尝试的后续步骤让您处于更好的位置。
请注意守望者当前发布的版本是4.5.0;您遵循的指示已过时(您能告诉我您是在哪里找到这些指示的吗?) https://facebook.github.io/watchman/docs/install.html 始终具有当前信息。
现在,关于中毒问题:
您看到的错误消息包括(损坏,抱歉!)link 到 https://facebook.github.io/watchman/docs/troubleshooting.html#poison-inotify_add_watch,其中对正在发生的事情有一些解释。
您需要阅读有关正确设置系统限制的部分: https://facebook.github.io/watchman/docs/install.html#system-specific-preparation
完成后,您可以通过 运行 watchman shutdown-server
有帮助吗?我想了解您发现其中哪些部分含糊不清,以便我可以为其他人改进它!
关于完全不同的错误。
你已经有守望者 运行ning,所以当你这样做时 react-native start
它会尝试启动另一个。
- 第一个运行
watchman shutdown-server
- 再次打开模拟器
- 在终端中调用
react-native start
- 在模拟器中打开您的应用。
一切正常。它对我有用。