libmysqlclient_r.so.16: не удается открыть общий объектный файл: нет такого файла или каталога DREAMHOST

У меня есть приложение RoR, развернутое на DREAMHOST. Вот версии, которые в настоящее время работают на

  • Ruby: ruby ​​1.8.7 (30 июня 2011 г., уровень исправления 352) [x86_64-linux]
  • Рельсы: Рельсы 3.2.3

Ошибка, когда я пытаюсь загрузить домашнюю страницу, выглядит следующим образом:

libmysqlclient_r.so.16: cannot open shared object file: No such file or directory - /gems/ruby/1.8/gems/mysql2-0.3.13/lib/mysql2/mysql2.so (LoadError)
/gems/ruby/1.8/gems/mysql2-0.3.13/lib/mysql2/mysql2.so
/gems/ruby/1.8/gems/mysql2-0.3.13/lib/mysql2.rb:8

/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:68:in `require'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:68:in `require'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:66:in `each'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:66:in `require'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:55:in `each'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:55:in `require'
/usr/lib/ruby/vendor_ruby/bundler.rb:120:in `require'
/config/application.rb:7 
/config/environment.rb:2:in `require'
/config/environment.rb:2
config.ru:3:in `require'
config.ru:3

Я попытался обновить гем mysql2, удалить и переустановить завершенный bundle install, который был успешным. Я попробовал wget -O и добавил файл. Но ошибка все еще сохраняется. Я пытался искать ответы, но мне не повезло.

Это для производственной среды. Любая обратная связь будет высоко оценена.


person LS2    schedule 27.10.2014    source источник


Ответы (1)


Ваша проблема не связана с драгоценными камнями. libmysqlclient_r жалуется, что mysql2.so не может быть найден, потому что он отсутствует на вашем компьютере. Вам нужно иметь дело с этим не с помощью bundler, а с помощью вашего системного менеджера пакетов (т.е. для Debian вы можете использовать apt-get или aptitude).

Сначала найдите абсолютный путь к вашему libmysqlclient_r.so:

dpkg -S libmysqlclient_r.so.16

теперь у вас есть абсолютный путь, поэтому запустите:

ldd ABSOLUTE_PATH_TO_YOUR_LIB/libmysqlclient_r.so

ldd перечисляет зависимости данной библиотеки. Будет отсутствовать как минимум один файл. Теперь все, что вам нужно сделать, это установить недостающие пакеты.

person blelump    schedule 27.10.2014
comment
Спасибо за ваш ответ. Команда dpkg не возвращает результат сопоставления пути. Однако dpkg -S libmysqlclient_r.so перечисляет 3 пути - person LS2; 28.10.2014
comment
Да, он должен вернуть что-то вроде $ dpkg -S libmysqlclient_r.so libmysqlclient-dev: /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so; .... Первый путь - это тот, который вас интересует. - person blelump; 28.10.2014
comment
Спасибо, я получил linux-vdso.so.1, libz.so.1, .... На серверах dreamhost мы не сможем использовать apt-get. Есть ли другой способ сделать это? - person LS2; 29.10.2014