Я пытаюсь установить приложение rails 3.2.21 с открытым исходным кодом, которое использует mysql2
драгоценный камень, но когда я пытаюсь запустить bundle
коммант, я получаю следующую ошибку:
Fetching: mysql2-0.3.18.gem (100%)
Building native extensions. This could take a while...
p
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
/Users/my_username/.rvm/rubies/ruby-2.1.2/bin/ruby -r ./siteconf20150614-72129-orqsb7.rb extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... yes
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/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Don't 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.6.25/lib
-----
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
linking shared-object mysql2/mysql2.bundle
ld: warning: directory not found for option '-L/Users/travis/.sm/pkg/active/lib'
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/my_username/.rvm/rubies/ruby-2.1.2/lib/ruby/gems/2.1.0/gems/mysql2-0.3.18 for inspection.
Results logged to /Users/my_username/.rvm/rubies/ruby-2.1.2/lib/ruby/gems/2.1.0/extensions/x86
Я попытался удалить все версии, которые mysql
я установил через homebrew, и переустановить их, например:
brew uninstall --force mysql && brew install mysql
Затем запускаем:
sudo gem install mysql2
Как подсказывает ряд аналогичных вопросов, заданных здесь, но это все равно приводит к той же ошибке, что и выше.
Пожалуйста, не мог бы кто-нибудь предложить руководство о том, как это запустить и запустить?
mysql
ruby-on-rails
ruby
ruby-on-rails-4
mysql2
зенверт
источник
источник
Ответы:
Журнал ошибок говорит:
ld: library not found for -lssl
Итак, вам необходимо установить
libssl
:brew install openssl
Как было указано в комментариях, возможно, потребуется экспортировать путь к библиотеке.
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
источник
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
Для тех, кто все еще испытывает проблему:
Когда вы устанавливаете openssl через brew, вы должны получить следующее сообщение:
Вы можете установить эти флаги сборки (для локального приложения), выполнив следующее:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
Это сработало для меня.
См . Дополнительную информацию в документации сборщика .
источник
gem install
, работает следующее:gem install mysql2 -v '0.3.21' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
gem install
, мое дляbundle install
. С какой именно проблемой вы столкнулись, можете ли вы опубликовать ошибку? Решение, которое я опубликовал, все еще работает для меня.bundle install
создать репо, зависящее от mysql. Решение @ AlessandroBerardi не сработало для меня; @niels 'сделал. : /bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
Решением для меня было установить инструменты командной строки Xcode.
Я недавно обновил Xcode через Mac App Store, и каждый раз, когда я это делаю, я обнаружил, что мне нужно снова переустанавливать инструменты командной строки.
xcode-select --install
источник
Попробуй это:
gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
(Обновите версию при необходимости)
источник
brew install openssl
затемgem install mysql2 -v '0.4.10' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
работал для меня, спасибо!На основе решения здесь
brew install openssl export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
решил проблему.
источник
export
действительно помогает. даже с существующим openssl путь отсутствует.Спасибо @mudasobwa за то, что указал мне в правильном направлении. Оказывается, ошибка была вызвана несвязанным файлом openssl, поэтому выполняется:
brew reinstall openssl && brew link openssl --force
Решил проблему. Я нашел решение здесь: OpenSSL, RVM, Brew, конфликтующая ошибка
источник
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
Отсюда: https://gorails.com/setup/osx/10.14-mojave
источник
Комбинация команд решила это меня. Я в Мохаве.
brew reinstall openssl && brew link openssl --force
а потом
gem install mysql2 -v '0.4.10' -- \ --with-ldflags=-L/usr/local/opt/openssl/lib \ --with-cppflags=-I/usr/local/opt/openssl/include
источник
После обновления Homebrew (openssl@1.1) есть новый путь для библиотек, поэтому можно использовать:
bundle config build.mysql2 --with-opt-dir=$(brew --prefix openssl) bundle install
Это исправит
ld: library not found for -lssl error
источник
Похоже, вам не хватает основных файлов, необходимых для создания
mysql2
гема.sudo apt-get install libsqlite3-dev libmysqlclient-dev -y
libsqlite3-dev
не является обязательным, но установите его, поскольку это база данных rails по умолчанию.источник
Я обнаружил, что пришлось использовать
--with-opt-dir=/usr/local/opt
.В частности, я добавил в свой
~/.bundle/config
файл следующее:BUNDLE_BUILD__MYSQL2: "--with-opt-dir=/usr/local/opt"
источник