Я не могу запустить обновление пакета из-за драгоценного камня mysql2

У меня есть это в Gemfile:

gem 'mysql2'

Но когда я запускаю обновление пакета, я получаю следующее сообщение об ошибке:

An error occurred while installing mysql2 (0.3.16), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.16'` succeeds before bundling.

Я попытался переместить это в производственную секцию, например:

group :production do
  gem 'mysql2'
end

Но после выполнения обновления пакета результат тот же. Этот раздел обрабатывается только в производственном режиме или нет?

Как избавиться от этого сообщения об ошибке на локальном хосте?

РЕДАКТИРОВАТЬ: все сообщение об ошибке:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/radek/.rvm/rubies/ruby-1.9.3-p385/bin/ruby extconf.rb
checking for ruby/thread.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/radek/.rvm/rubies/ruby-1.9.3-p385/bin/ruby
/Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:506:in `try_cpp'
    from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:931:in `block in have_header'
    from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
    from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
    from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
    from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
    from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
    from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:930:in `have_header'
    from extconf.rb:9:in `<main>'


Gem files will remain installed in /Users/radek/.rvm/gems/ruby-1.9.3-p385/gems/mysql2-0.3.16 for inspection.
Results logged to /Users/radek/.rvm/gems/ruby-1.9.3-p385/gems/mysql2-0.3.16/ext/mysql2/gem_make.out
An error occurred while installing mysql2 (0.3.16), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.16'` succeeds before bundling.

Спасибо


person user984621    schedule 03.06.2014    source источник
comment
Я считаю, что это full error message. Пожалуйста, опубликуйте full error message при запуске bundle update.   -  person Pavan    schedule 03.06.2014
comment
вы удостоверились, что gem install mysql2 -v '0.3.16' успешно перед объединением?   -  person Sergio Tulentsev    schedule 03.06.2014
comment
Я опубликовал весь вывод ошибки   -  person user984621    schedule 03.06.2014
comment
Хм, в этом есть смысл. На какой машине вы работаете? Ubuntu or Mac or Windows   -  person Pavan    schedule 03.06.2014
comment
mysql2 gem уже установлен на вашем компьютере?   -  person Pavan    schedule 03.06.2014
comment
bundle show mysql2 - ›Не удалось найти гем 'mysql2 (= 0.3.16) ruby' в драгоценных камнях, доступных на этой машине.   -  person user984621    schedule 03.06.2014
comment
В сообщении об ошибке говорится: сначала необходимо установить средства разработки. Вы это сделали?   -  person Sergio Tulentsev    schedule 03.06.2014
comment
Вы используете homebrew?   -  person Pavan    schedule 03.06.2014
comment
Мой ответ сработал для вас?   -  person Pavan    schedule 03.06.2014


Ответы (5)


В Ubuntu запустите

sudo apt-get install libmysqlclient-dev

Или, если вы используете MariaDB, запустите

sudo apt-get install libmariadbclient-dev
person Ri4a    schedule 21.09.2014
comment
Это сработало для меня, спасибо! Я пробовал установить redmine-2.5-stable. - person 18augst; 22.09.2014
comment
Это работает для меня! Спасибо - person daronwolff; 08.04.2016

Похоже, на вашем компьютере не установлен mysql2 gem. Поскольку вы используете Mac OSX, вам следует установить mysql2 gem следующим образом

gem install mysql2 -- --with-mysql-dir=/usr/local/opt/mysql/ 

Если указанная выше команда не сработала, попробуйте вот так

sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

И после попытки

bundle install

Это должно исправить ошибку.

Источник

person Pavan    schedule 03.06.2014
comment
brew install mysql не будет устанавливать гем mysql2 - person Sergio Tulentsev; 03.06.2014
comment
@SergioTulentsev Что насчет этого, тогда stackoverflow.com/questions/11945425/ - person Pavan; 03.06.2014
comment
Этот тоже не установит драгоценный камень. Он установит что-нибудь еще. - person Sergio Tulentsev; 03.06.2014
comment
@SergioTulentsev Да! Если он не устанавливает mysql2 gem, что еще он устанавливает? - person Pavan; 03.06.2014
comment
@SergioTulentsev Приношу свои извинения! - person Pavan; 03.06.2014
comment
Я все время получаю эту ошибку /Users/Ben/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/mkmf.rb:456:in `try_do ': компилятору не удалось создать исполняемый файл. (RuntimeError) Сначала необходимо установить средства разработки. Любая возможная помощь в том, что проверить, я пробовал много предложений, похоже, не удается создать mysql2 или найти эти инструменты разработчика, которые ему нужны. Возможно ли, что моя установка mysql просто имеет их - person bjm88; 04.12.2015
comment
У меня валялась старая установка mysql из самогона. Я запустил brew update, затем brew upgrade mysql, а затем смог установить mysql2, используя ваше первое предложение. Спасибо! - person Troy; 18.12.2016
comment
Я все время возвращаюсь к этому замечательному ответу. Я наконец понял, что могу добавить это в свою конфигурацию пакета, запустив bundle config build.mysql2 --with-mysql-dir=/usr/local/opt/mysql/. Это сохранит его в файле конфигурации пакета по адресу ~ / .bundle / config, чтобы в следующий раз мне пришлось установить гем mysql с помощью Bundler. - person Troy; 30.09.2017

Добавьте это в Gemfile: -

gem 'mysql2', '0.3.16'

Потом:-

bundle install

После этого попробуйте: -

bundle update
person Shamsul Haque    schedule 03.06.2014

Я только что установил mysql через $ brew install mysql, и проблема устранилась.

person Catfish    schedule 19.09.2014

Я получил почти идентичное сообщение об ошибке при попытке сборки на машине без установленного gcc-c++; mkmf не может скомпилировать простую программу на c, потому что компилятора нет.

Если вы используете CentOS, вам нужно sudo yum install gcc-c++. В Ubuntu это sudo apt-get install g++. Немного разочаровывает то, что старые версии ruby-devel не зависят от g++.

person ymbirtt    schedule 11.08.2016