Ответ 1
Один из простых и лучших способов - создать мягкую ссылку по команде -
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
http://rorguide.blogspot.com/2011/07/getting-error-library-not-loaded.html
Я только что скомпилировал ruby и установил rubygems, mysql2 и rails, которые работали неплохо. Но я получаю следующее сообщение об ошибке, когда я пытаюсь запустить сервер rails:
/usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2.rb:7:in `require': dlopen(/usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib (LoadError) Referenced from: /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle Reason: image not found - /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2.rb:7:in `' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:68:in `require' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:68:in `block (2 levels) in require' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:66:in `each' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:66:in `block in require' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in `each' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in `require' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler.rb:120:in `require' from /Users/filzo/Documents/rails/blog/config/application.rb:7:in `' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:28:in `require' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:28:in `block in ' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:27:in `tap' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:27:in `' from script/rails:6:in `require' from script/rails:6:in `'
Я попробовал несколько возможных решений (например: http://railsforum.com/viewtopic.php?pid=23125#23125 с libmysqlclient.18.dylib); но ничего не работало для меня. Надеюсь, ты поможешь мне.
EDIT: Кажется, что это исправило проблему для меня:
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
В любом случае; это ошибка в MySQL или ruby-code?
Один из простых и лучших способов - создать мягкую ссылку по команде -
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
http://rorguide.blogspot.com/2011/07/getting-error-library-not-loaded.html
Это, по-видимому, известная ошибка (и нефиксированная!) в бинарном дистрибутиве MySQL.
Во время работы install_name_tool
в ваших файлах mysql2.bundle будет работать, если вы удалите и перестройте их, вы вернетесь к квадрату. Кроме того, вам придется применить это исправление ко всему, что связано с ним. Лучшим решением является устранение проблемы в самой библиотеке:
$ sudo install_name_tool -id \
/usr/local/mysql/lib/libmysqlclient.18.dylib \
/usr/local/mysql-5.5.12-osx10.6-x86_64/lib/libmysqlclient.18.dylib
Удаление и восстановление драгоценного камня mysql2:
$ gem uninstall mysql2
$ gem install mysql2
... подберет изменение в библиотеке, и все должно работать правильно, без необходимости переделывать любые переменные среды.
Если вы используете RVM (отличный выбор) в Mac OS X - вот волшебная команда, которая наконец-то сработала для меня.
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Users/*USERNAME*/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
Замените USERNAME в синтаксисе соответствующим образом в соответствии с вашей текущей настройкой. И если ваша версия mysql gem отличается от других, это также.
Лучшей альтернативой инструменту install_name является добавление пути к mysql lib в переменную окружения DYLD_LIBRARY_PATH. В /etc/profile:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib
Или, поскольку у меня также установлен Oracle Instant Client, выполните следующие действия:
export ORACLE_HOME="/usr/local/oracle/instantclient_10_2"
export DYLD_LIBRARY_PATH=$ORACLE_HOME
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib
Попробуйте сделать эту символическую ссылку, поэтому рейк может найти правильный клиентский клиент MySQL.
ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Я не уверен, поможет ли это или нет, но я использую OS X 10.7.1 Lion. В моем случае я открыл окно терминала, перешел в /Library/Ruby/Gems/ 1.8/gems/mysql2-0.3.7, и как только я сделал RVM, я сказал, что он столкнулся с новым или измененным файлом .rvmrc. Содержимое этого файла:
rvm use [email protected] --create
Он спросил, хочу ли я доверять этому .rvmc файлу. Я сказал "да", и он вернул следующее:
Using /Users/dan/.rvm/gems/ruby-1.9.2-p290 with gemset mysql2
Как только это произошло, я выполнил следующую команду:
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.3.7/lib/mysql2/mysql2.bundle
Как только я это сделал, я решил пойти. Надеюсь, это поможет!