LoadError: проблема с гемом MySQL2 с неправильной версией libmysqlclient.so.20 в Ubuntu LTS 20.04

После обновления до Ubuntu LTS 20.04 (с LTS 18) меня перевели на более новую версию MySQL (с v5.7.3 до 8.0.16). Все базы данных и конфигурации были успешно обновлены, но гем MySQL2 настаивает на попытках сборки с использованием более старой версии libmysqlclient (libmysqlclient.so.20, а не более новой libmysqlclient.so.21)

Я удалил и переустановил пакеты APT: mysql-server и libmysqlclient-dev, а также удалил и переустановил гем MySQL2, но безрезультатно.

Как видно из приведенных ниже данных, ссылка по-прежнему выглядит некорректно, и я не могу найти способ связать ее с правильной версией. Любая помощь очень ценится.

$ gem список mysql2

*** МЕСТНЫЕ КАМНИ ***

mysql2 (0.5.3)

$ mysql -v -u *** -p Введите пароль: Добро пожаловать в монитор MySQL. Команды заканчиваются на; или \ g. Ваш идентификатор подключения MySQL - 14 Версия сервера: 8.0.21-0ubuntu0.20.04.4 (Ubuntu)

$ RAILS_ENV = производственный пакет exec rails c Traceback (последний вызов последним): 1: из /home/<▪/<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 / библиотека / 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 корень root 9242056 4 августа 12:39 /usr/lib/x86_64-linux-gnu/libmysqlclient.a lrwxrwxrwx 1 корневой корень 20 4 августа 12:39 /usr/lib/x86_64-linux-gnu/libmysqlclient.so - ›libmysqlclient.so.21 lrwxrwxrwx 1 корневой корень 25 августа 4 12:39 / usr / lib / x86_64-linux-gnu /libmysqlclient.so.21 - ›libmysqlclient.so.21.1.21 -rw-r - r-- 1 корневой корневой каталог 7264264 4 августа 12:39 /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1. 21 год


person Kitebuggy    schedule 04.10.2020    source источник


Ответы (2)


я удалил

./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

И это работает. Спасибо

person Cedric L.    schedule 06.10.2020
comment
Рад это слышать! Мне потребовалось много времени, чтобы разобраться, но я рад слышать, что это помогло кому-то другому. - person Kitebuggy; 07.10.2020

Наконец решил это. Я должен был вручную удалить все предыдущие копии драгоценных камней во все строителе и .rvm папки, а затем камне, кажется, собрать правильно и все работает снова.

person Kitebuggy    schedule 04.10.2020