Библиотека не загружена: ошибка libmysqlclient.16.dylib при попытке запустить "сервер rails" на OS X 10.6 с помощью mysql2 gem
Я боролся с этим в течение некоторого времени.
Я установил Rails 3, gem, mysql на свою машину Snow Leopard. Все шло хорошо, пока я не создал свой первый проект и не попытался запустить
rails server
После запуска я получаю:
jontybrook$ rails server
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError)
Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.rb:7
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `each'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `each'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `require'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:112:in `require'
from /Users/jontybrook/Dropbox/CODING/simple_cms/config/application.rb:7
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require'
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27
from script/rails:6:in `require'
from script/rails:6
jontybrook$
Насколько я могу судить, проблема связана с камнем mysql2. MySQL, похоже, работает нормально, и мои ссылки Gemfile mysql2, мой файл database.yml также выглядит нормально.
В ошибке упоминается
Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
И все же
jontybrook$ cd /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2
jontybrook$ ls
client.rb em.rb error.rb mysql2.bundle result.rb
MySQL2.bundle есть!?
Если я использую старый камень mysql, WEBrick загрузится нормально. Но это не идеально, не так ли?
Я пробовал все, что Google может дать мне! Любая помощь очень ценится.
Ответы
Ответ 1
Я никогда не мог получить ни один из этих ответов, чтобы работать для меня, но это команда, которую я использовал, чтобы заставить ее работать для меня. Таким образом, вам не нужно использовать install_name_tool каждый раз, когда вы обновляете mysql
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Ответ 2
Я решил это, в конце концов!
Я снова установил Ruby и Rails под RVM. Я использую Ruby версии 1.9.2-p136.
После повторной установки под rvm эта ошибка все еще присутствовала.
В конце концов, волшебная команда, которая его решила, была:
sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
Надеюсь, это поможет кому-то еще!
Ответ 3
Это исправление работало очень хорошо для меня:
Добавьте следующее к вашему ~/.profile
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/
Ответ 4
Для меня это было только потому, что я обновил mysql, но не обновил gem mysql2 - переустановка камня исправит его...
gem pristine mysql2
Ответ 5
У меня такая же проблема. Похоже, что он не может найти библиотеку libmysqlclient. Временное исправление, которое сработало для меня, следующее:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
Я не уверен, где config указывает путь загрузки или то, что он установил, но моя установка mysql, похоже, не была в нем. Я отправлю сообщение, если найду более постоянное решение.
Изменить:
Фактически этот исправление, по-видимому, более точно решает проблему.
Ответ 6
Добавьте ниже к ~/.bash_profile
:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
Это сработало для меня
Ответ 7
В OSX El Capitan обновляется, когда вы это делаете:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
он выдает ошибку, например
ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted
Итак, чтобы избежать этого, вы можете сначала найти libmysqlclient.18.dylib
с помощью команды
User$ locate libmysqlclient.18.dylib
В моем случае он вернул /usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib
Итак, вместо usr/lib/
мы создадим символическую ссылку на usr/local/lib/
следующим образом:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Подробнее: https://forums.developer.apple.com/thread/7935
Ответ 8
Следующие строки работают для меня. Я использую mac 10.7.2.
sudo ln -s/usr/local/mysql/lib/libmysqlclient.18.dylib/usr/lib/libmysqlclient.18.dylib
Ответ 9
Просто столкнулся с этой проблемой. Все, что мне нужно было сделать, это удалить gem mysql2 и переустановить его. Надеюсь, это сработает для других людей.
Ответ 10
Вот как это сработало для меня:
Я выполнил команду ниже
sudo install_name_tool -change libmysqlclient.18.dylib/usr/local/mysql/lib/libmysqlclient.18.dylib ~/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle
Моя среда:
$ rails -v
Rails 3.0.6
$mysql --version
mysql Ver 14.14 Рассылка 5.5.11 для osx10.6 (i386) с использованием readline 5.1
$ruby -v
ruby 1.9.2p180 (2011-02-18 редакция 30909) [x86_64-darwin10.7.0]
Надеюсь, это поможет кому-то.
Ответ 11
Спасибо, Огапо! Экспорт этого псевдонима работал у меня, а затем я следил за ссылкой, и в моем случае mysql2.bundle находился в /Library/Ruby/Gems/ 1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, поэтому Я скорректировал install_name_tool, чтобы изменить этот пакет, а не один в ~/.rvm, и получил то, что работает так, как это должно быть сделано.
Итак, теперь:
$ otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
/usr/local/mysql/lib/libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)
Ответ 12
Привет, он работал у меня по рекомендованной ссылке от Fredy Andersen
sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql /lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
просто нужно было перейти на мою версию mysql, в команде,
спасибо
Ответ 13
Я решил эту проблему, удалив мой gemset для моего текущего проекта и воссоздав его и перезапустив установку пакета. Я думаю, что я вызвал это, установив новую версию mysql.
Ответ 14
У меня была эта проблема при работе с Django, я использую brew
для установки множества моих программ с открытым исходным кодом, и мне нужно было сделать следующее, так как я использовал brew
для установки mysql
:
sudo ln -s /usr/local/Cellar/mysql/5.5.20/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Обязательно замените свою версию библиотек!
Ответ 15
bundle install mysql --force
помог мне. Он переустановил зависимости, которые были отправлены в результате brew uninstall mysql
.
Ответ 16
У меня была такая же проблема несколько дней назад. В конечном итоге мне удалось это решить. Я не совсем уверен, как, но я скажу вам, что я сделал. Возможно, это поможет вам.
Я начал с загрузки RVM. Если вы еще не используете его, я настоятельно рекомендую сделать это. Он в основном создает песочницу для новой отдельной установки Ruby, RoR и RubyGems. Фактически, вы можете иметь несколько установок одновременно и мгновенно переключаться друг на друга. Он работает как шарм.
Почему это полезно? Потому что вам не следует возиться с установкой Ruby по умолчанию в OS X. От этого зависит система. Лучше просто оставить установку по умолчанию Ruby и RoR самостоятельно и создать новую, используя RVM, которую вы можете использовать для своей собственной разработки.
Как только я создал свою отдельную установку Ruby, я только что установил RoR, RubyGems и mysql, и это сработало. Для конкретных шагов, которые я предпринял, см. Мой вопрос: Установка Rails, MySQL и т.д. Все идет не так.
Опять же: я точно не знаю, что это решит вашу проблему. Но это, безусловно, помогло, и в любом случае использование RVM очень рекомендуется.
Ответ 17
Джонти, я тоже борюсь с этим.
Я думаю, что здесь есть ключ:
otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)
Обратите внимание, что путь к dylib довольно короткий?
Я пытаюсь выяснить, где инструкции по установке gem уходят с пути dylib, но он медленный, так как я никогда не создавал самоцветов.
Я напишу больше, если найду больше!
Ответ 18
Я все еще обнаружил, что с решениями выше он не работал (например) с плагином Rails для TextMate. Я получил аналогичную ошибку (при извлечении схемы базы данных).
Итак, что же, открытый терминал:
cd /usr/local/lib
sudo ln -s ../mysql-5.5.8-osx10.6-x86_64/lib/libmysqlclient.16.dylib .
Замените mysql-5.5.8-osx10.6-x86_64 на свой собственный путь (или mysql).
Это делает ссылку символа на lib, теперь rails запускается из командной строки, так же как и плагин TextMate, например ruby-on-rails-tmbundle.
Чтобы быть ясным: это также исправляет ошибку, возникающую при запуске сервера rails.
Ответ 19
Я решил это, создав файл .rvmrc в моей папке проекта:
rvm use <yourrubie>
затем введите мой путь к проекту
cd ~/myprojectpath
тогда я запускаю
bundle install
Ответ 20
Моя версия команды luvlss:
Mac OSX 10.10.5
MySQL 5.6.27
Пассажир 5.0.21
sudo ln -s /usr/local/mysql-5.6.27-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Если вы пытаетесь найти множество ссылок, например, я сделал, выполните некоторую очистку:
sudo unlink /usr/lib/libmysqlclient.18.dylib
Ответ 21
Это обычно происходит при обновлении mysql. Установленный камень mysql2, который был построен на старых mysql-библиотеках, не может работать с новыми библиотеками. Просто переустановите его.
Удалите mysql2 с помощью gem uninstall mysql2
. Затем установите его с помощью gem install mysql2
Ответ 22
Если вы используете OSX и устанавливаете mysql с помощью brew, вы можете:
brew link mysql
Если у вас возникли проблемы с версией (у меня был mysql 5.7, хотя мой драгоценный камень требовал 5.6.25), вы можете
brew unlink mysql
brew switch mysql 5.6.25
Ответ 23
Откройте Terminal и запустите следующее:
export PATH=$PATH:/usr/local/mysql/bin
Он должен работать.