出现 rb-inotify 错误“Errno::ENOSYS”带指南针和 susy 插件
我安装了 Compass gem (compass-0.11.beta.2) 以及 Compass susy 插件。每次我运行“compass watch”时,都会收到错误:
“/path/to/rb-inotify/notifier.rb 行 [“60”] 上的 Errno::ENOSYS:初始化 inotify”
这是 notifier.rb 中的代码块,错误引用了
def initialize
@fd = Native.inotify_init
@watchers = {}
return unless @fd < 0
raise SystemCallError.new(
"Failed to initialize inotify" +
case FFI.errno
when Errno::EMFILE::Errno; ": the user limit on the total number of inotify instances has been reached."
when Errno::ENFILE::Errno; ": the system limit on the total number of file descriptors has been reached."
when Errno::ENOMEM::Errno; ": insufficient kernel memory is available."
else; ""
end,
This is line ["60"] ===> FFI.errno)
end
我尝试重新安装所有涉及的 gem,以及每个 gem 的 3-4 个不同版本,但每次仍然遇到相同的错误。有人可以帮我吗?
I have the Compass gem installed (compass-0.11.beta.2), along with the Compass susy plugin. Every time I run "compass watch", I get the error:
"Errno::ENOSYS on line ["60"] of /path/to/rb-inotify/notifier.rb: initialize inotify"
This is the block of code in notifier.rb that the error is referencing
def initialize
@fd = Native.inotify_init
@watchers = {}
return unless @fd < 0
raise SystemCallError.new(
"Failed to initialize inotify" +
case FFI.errno
when Errno::EMFILE::Errno; ": the user limit on the total number of inotify instances has been reached."
when Errno::ENFILE::Errno; ": the system limit on the total number of file descriptors has been reached."
when Errno::ENOMEM::Errno; ": insufficient kernel memory is available."
else; ""
end,
This is line ["60"] ===> FFI.errno)
end
I've tried reinstalling all of the gems involved, as well as 3-4 different versions of each, but I still get the same error every time. Can anyone give me a hand?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要升级您的系统。
对
inotify_init(2)
的底层调用返回 ENOSYS,这意味着该功能未在系统的 libc 中实现,甚至可能在内核中不受支持。(例如,某些旧版本的 Fedora Linux 似乎支持内核中的 inotify 功能,但没有提供公开该功能的 glibc。)
You need to upgrade your system.
The underlying call to
inotify_init(2)
is returning ENOSYS, which means that the functionality is not implemented in your system's libc, and perhaps not even supported in the kernel.(Some old versions of Fedora Linux, for example, appear to have supported the
inotify
facility in the kernel but did not ship a glibc that exposed the feature.)