LoadError:MySQL2 gem 问题,Ubuntu LTS 20.04 上的 libmysqlclient.so.20 版本不正确
Posted
技术标签:
【中文标题】LoadError:MySQL2 gem 问题,Ubuntu LTS 20.04 上的 libmysqlclient.so.20 版本不正确【英文标题】:LoadError: MySQL2 gem issue with incorrect libmysqlclient.so.20 version on Ubuntu LTS 20.04 【发布时间】:2021-01-19 10:05:33 【问题描述】:自从升级到 Ubuntu LTS 20.04(从 LTS 18)以来,我一直在使用更新版本的 mysql(从 v5.7.3 到 8.0.16)。所有数据库和配置都已成功更新,但 MySQL2 gem 坚持尝试针对较旧版本的 libmysqlclient(libmysqlclient.so.20 而不是较新的 libmysqlclient.so.21)进行构建
我已经卸载并重新安装了 APT 包:mysql-server 和 libmysqlclient-dev,以及卸载并重新安装 MySQL2 gem,但没有任何效果。
正如您从下面的数据中看到的那样,它的链接似乎仍然不正确,我找不到让它链接到正确版本的方法。非常感谢任何帮助。
$ gem list mysql2
*** 本地宝石 ***
mysql2 (0.5.3)
$ mysql -v -u *** -p 输入密码: 欢迎使用 MySQL 监视器。命令以 ; 结尾或\g。 您的 MySQL 连接 ID 是 14 服务器版本:8.0.21-0ubuntu0.20.04.4 (Ubuntu)
$ RAILS_ENV=生产包 exec rails c
回溯(最近一次通话最后):
1:来自/home///shared/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2.rb:36:in <top (required)>' /home/rails/kwai/shared/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2.rb:36:in
require': libmysqlclient. so.20:无法打开共享对象文件:没有这样的文件或目录 - /home/rails/kwai/shared/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.so(LoadError )
$ ldd mysql2.so linux-vdso.so.1 (0x00007fffa3b5e000) libruby.so.2.6 => /home/***/.rvm/rubies/ruby-2.6.3/lib/libruby.so.2.6 (0x00007f8d4c92d000) libmysqlclient.so.20 => 未找到 libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8d4c902000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8d4c710000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f8d4c6f4000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f8d4c6e9000) libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f8d4c663000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8d4c65d000) libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f8d4c622000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8d4c4d3000) /lib64/ld-linux-x86-64.so.2 (0x00007f8d4cecc000)
$ ls -l /usr/lib/x86_64-linux-gnu/libmy* -rw-r--r-- 1 根 9242056 8 月 4 日 12:39 /usr/lib/x86_64-linux-gnu/libmysqlclient.a lrwxrwxrwx 1 root root 20 Aug 4 12:39 /usr/lib/x86_64-linux-gnu/libmysqlclient.so -> libmysqlclient.so.21 lrwxrwxrwx 1 root root 25 Aug 4 12:39 /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21 -> libmysqlclient.so.21.1.21 -rw-r--r-- 1 root root 7264264 8 月 4 日 12:39 /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.21
【问题讨论】:
【参考方案1】:我删除了
./vendor/bundle/ruby/2.7.0/specifications/mysql2-0.5.3.gemspec
./vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3
./vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2
而且它有效。谢谢
【讨论】:
很高兴听到这个消息!我花了很长时间才锻炼出来,但我很高兴听到它对其他人有所帮助。【参考方案2】:终于解决了。我不得不手动删除所有 builder 和 .rvm 文件夹中所有以前的 gems 副本,然后 gem 似乎可以正确编译,一切都恢复正常了。
【讨论】:
以上是关于LoadError:MySQL2 gem 问题,Ubuntu LTS 20.04 上的 libmysqlclient.so.20 版本不正确的主要内容,如果未能解决你的问题,请参考以下文章
LoadError:MySQL2 gem 问题,Ubuntu LTS 20.04 上的 libmysqlclient.so.20 版本不正确
未加载修复库:libmysqlclient.16.dylib(LoadError)
错误“...无法加载此类文件 -- mysql2/2.0/mysql2 (LoadError)”。在带有 Ruby 2.0.0 的 Windows XP 上
尝试访问我的 ruby 项目-与 mysql 相关的 LoadError