我是rails的新手,昨天我在Ubuntu 19.10上工作。我决定将我的操作系统升级到新版本。升级完成后一切都很好。我开始使用我的计算机进行开发,发现任何rails命令都不起作用,并向我显示了这个错误
in `require': libffi.so.6: cannot open shared object file: No such file or directory - /home/ace/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/ffi-1.13.1/lib/ffi_c.so (LoadError)
我发现有人也有同样的问题,但他们中没有一个在铁轨上有问题,他们中的任何一个都对我有用。
我认为问题出在libffi.so.6包上,因为我的操作系统上安装了ffin-1.13.1
Ubuntu 20.04将libffi6升级为libffi7,但您的Rails应用程序仍在寻找libffi6。您需要运行以下命令:
gem pristine ffi
这应该可以修复
gem pristine ffi
对我没有帮助。更具侵入性的
gem uninstall ffi
gem install ffi
完成了任务。
将gem "ffi", github: "ffi/ffi"
添加到我的Gemfile
修复了
-
当你切换红宝石时,它需要重建。
-
令人烦恼的是,即使在安装时,它似乎也会失败,并且您还尝试使用
byebug
调试器。(即使在安装了ffi二进制文件的情况下,它也能为我做到这一点——去掉byebug
调试器不会陷入这个ffi错误(
使用ruby/debug
似乎可以实现
我的错误是rails 6.1.4
的ubuntu 20.04
上的libffi 8
https://github.com/ffi/ffi#requirements解决了我的问题
--enable-system-libffi : Force usage of system libffi
--disable-system-libffi : Force usage of builtin libffi
--enable-libffi-alloc : Force closure allocation by libffi
--disable-libffi-alloc : Force closure allocation by builtin method
我在这里遇到了同样的问题:https://github.com/ffi/ffi/issues/947#issuecomment-1089299217
首先卸载gem:
gem uninstall ffi
然后用重新安装
gem install ffi -- --disable-system-libffi
以下是对我的帮助:
- 删除项目的供应商/缓存文件夹
bundle install