Подтвердить что ты не робот

Не удается установить 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
4b9b3361

Ответ 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/