我刚刚升级到 ubuntu 20.10,当我尝试使用之前运行良好的 rails 应用程序时,开始显示此错误。
LoadError: libffi.so.7: cannot open shared object file: No such file or directory -
/home/mahmud/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/ffi-1.13.1/lib/ffi_c.so
Run Code Online (Sandbox Code Playgroud)
我的 rails 版本:6.0.3.4 Ruby 版本:2.7.1p83 我使用 rbenv 安装了 ruby 谁能告诉我我搞砸了什么?
小智 12
由于 Ubuntu 20.10 附带了libff8而不是libffi7,所以我libffi7通过从 ubuntu focus (20.04) 手动下载 deb 包来安装:
wget http://es.archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi7_3.3-4_amd64.deb
sudo dpkg -i libffi7_3.3-4_amd64.deb
Run Code Online (Sandbox Code Playgroud)
之后我就可以成功安装ffigem了。
这不需要安装或更改任何其他软件包。另外,默认的 libffi 共享库似乎是 libffi8:
$ ldconfig -p | grep ffi
libffi.so.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libffi.so.8
libffi.so.8 (libc6) => /usr/lib/i386-linux-gnu/libffi.so.8
libffi.so.7 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libffi.so.7
libffi.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libffi.so
$ ls -l /usr/lib/x86_64-linux-gnu/libffi.so
lrwxrwxrwx 1 root root 15 ago 20 11:31 /usr/lib/x86_64-linux-gnu/libffi.so -> libffi.so.8.1.0
Run Code Online (Sandbox Code Playgroud)
到目前为止我还没有遇到任何问题。
Ubuntu的20.04带着被称为共享库libffi.so.7,从包装libffi7。该库已被您的一颗 ruby 宝石ffi引用。
在 Ubuntu 20.10 的标准存储库中libffi7不再有软件包,因此它可能在升级过程中已从您的系统中删除。相反,Ubuntu 20.10 带来了一个名为libffi8ubuntu1的包。
您至少需要检查libffi8ubuntu1软件包是否已安装并重新安装ffigem,因此它引用 libffi8 而不是 libff7。我不知道 libffi8 是否只是在您的用例中替换了 libffi7,或者您是否需要进行更多更改。可能您需要等到链上的开发人员(ffigem的开发人员等)进行任何必要的调整,然后再安装新版本。
| 归档时间: |
|
| 查看次数: |
4824 次 |
| 最近记录: |