Не удается установить mysql2 gem на macOS Sierra
Я настраиваю среду разработки в новом macOS Sierra.
Прежде всего, я установил Rbenv, Ruby (2.3.1), Homebrew, и поэтому последняя версия MySQL (5.7.15).
$ brew install mysql
$ mysql.server start
Хорошо, MySQL был инициализирован. Время установки mysql2 gem...
$ gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config
Но это не сработало. 😞
Building native extensions with: '--with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config'
This could take a while...
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2
/Users/macuser/.rbenv/versions/2.3.1/bin/ruby -r ./siteconf20160921-16853-x1boio.rb extconf.rb --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/Cellar/mysql/5.7.15/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Dont know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/Cellar/mysql/5.7.15/lib
-----
creating Makefile
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0-static/mysql2-0.4.4/mkmf.log
current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2
make "DESTDIR=" clean
current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2
make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
compiling statement.c
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4 for inspection.
Results logged to /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0-static/mysql2-0.4.4/gem_make.out
Ответы
Ответ 1
У меня была такая же проблема, я попробовал все перечисленные выше решения, а затем начал биться головой о клавиатуру в течение нескольких часов.
Затем я подумал попробовать и установить/переустановить инструменты командной строки Xcode:
xcode-select --install
Как только я это сделал, монстр mysql2 установлен без проблем. Я надеюсь, что это трюк!
Ответ 2
Когда вы устанавливаете openssl через brew, вы должны получить следующее сообщение:
Apple отказалась от использования OpenSSL в пользу своих собственных TLS и криптографических библиотек
Как правило, никаких последствий для вас нет. Если вы собственного программного обеспечения, и для этого требуется эта формула, вам нужно добавить строить переменные:
LDFLAGS: -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include
PKG_CONFIG_PATH:/usr/local/opt/openssl/lib/pkgconfig
Вы можете установить эти флаги сборки (для локального приложения), выполнив следующее:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
Это сработало для меня.
Подробнее см. документацию поставщика пакетов.
Ответ 3
Я здесь, чтобы поделиться своим исправлением, поскольку другие ответы не помогли.
Для моей среды мне нужен MySQL 5.6, поэтому мне пришлось использовать:
brew install mysql56
вместо brew install mysql
Связывание с установкой mysql2 gem продолжалось сбой, пока:
brew link mysql56
Я также побежал потом:
mysql.server start
Последний шаг может быть ненужным, но просто в случае.
Ответ 4
Попробуйте установить xcode-select -install
Ответ 5
Итак, я столкнулся с подобной проблемой, и для меня это оказалось неправильной версией ruby и несовместимой версией MySQL. Я использую ruby 2.3 для большинства своих проектов, но унаследовал проект 2.1. Переход на rvm для использования 2.1 дал мне немного больше.
Затем я нашел это: https://github.com/brianmario/mysql2/issues/603, в котором говорилось, что вам нужно использовать версию gem mysql2, большую, чем 0.3.17, с MySQL версии 5.7
Обновлен драгоценный камень до 0.3.17, и он выстрелил прямо вверх. Надеюсь, это поможет кому-то.
Ответ 6
Почти такой же сценарий, как @Caio Tarifa, Ruby 2.3.3, mysql 5.6 и mysql2. Пробовал пару решений выше и, наконец, сделал его работу с подходом @kylekeesling.
Сначала попробовал решение 1 by @spickermann:
brew reinstall openssl && brew link openssl --force
Ничего не произошло, указана одна и та же ошибка.
Во-вторых, попробовал решение от @Alessandro Berardi:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
Это изменилось, но больше ошибок, поскольку он перезаписывает конфигурацию расширения gem, поэтому вся установка расширения gem не удалась.
Наконец, попробовал решение @kylekeesling:
xcode-select --install
Исправлена проблема с mysql gem, а также nikogiri. Поскольку у меня уже есть Xcode, в моем случае он переустанавливает инструменты командной строки Xcode.
Ответ 7
У меня такая проблема. Надеюсь, это может быть полезно.
brew install [email protected]
brew link [email protected] --force
bundle install
этот ответ поможет мне!
Ответ 8
Множество отличных ответов, я смог объединить их в это:
gem install mysql2 --source 'https://rubygems.org/' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
потому что я не был bundle config
Ответ 9
это работает мне xcode-select --install
Спасибо
Ответ 10
Сначала вы должны попробовать 2 ответа в здесь
Если вы установили openssl, но он все равно не работает. Вы должны попытаться обновить ссылку на драгоценные камни. У меня такая же проблема, и это сработало для меня.
gem source -r https://rubygems.org/
gem source -a https://rubygems.org/