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

Gem install mysql2 не работает

Я получил эту ошибку:

sudo gem install mysql2
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb
checking for rb_thread_blocking_region()... no
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing.  please check your installation of mysql and try again.
-----
*** 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
    --without-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=/usr/bin/ruby1.8
    --with-mysql-config
    --without-mysql-config


Gem files will remain installed in /var/lib/gems/1.8/gems/mysql2-0.2.6 for inspection.
Results logged to /var/lib/gems/1.8/gems/mysql2-0.2.6/ext/mysql2/gem_make.out

Я пробовал:

  • удалить mysql2 и установить его снова
  • удалить mysql с помощью apt-get
  • installd dev-tools из mysql
  • и почти все страницы в Google

Как я могу это исправить?

4b9b3361

Ответ 1

Вам необходимо установить libmysqlclient-dev перед установкой mysql2 gem:

sudo apt-get install libmysqlclient-dev
gem install mysql2

Это должно устранить эту проблему на последних версиях Ubuntu.

Ответ 2

Спасибо Андрею Швайгоферу, просто к нему

sudo apt-get install libmysqlclient-dev
gem install mysql2

..
bundle update
bundle install

СОВЕРШЕНА!!!

Ответ 3

Требуется установить пакет разработки mysql

yum install mysql-devel

Ответ 4

Его helful, чтобы использовать поиск здесь;): ruby-mysql

вот еще один поток;) с той же проблемой: ruby-mysql2

и еще много, когда вы ищете "ruby mysql2" или что-то вроде этого.

Ответ 5

Это несколько причин этого сбоя:

  • Плохая совместимость версий между ruby ​​и rubygems
  • Отсутствует libmysqlclient-dev
  • gem не находит
  • Mysql 32bit на 64-битной системе

Решение

  • Установите rvm с последней стабильной версией, вы можете переключиться через rvm между рубиновыми версиями

    curl -L https://get.rvm.io | bash -s stable

  • Установите параметр dependecy

    sudo apt-get install libmysqlclient-dev

  • найдите mysql_config в вашей системе (найдите/-name mysql_config) и запустите

    gem install mysql -- --with-mysql-config=/path/to/mysql_config

  • Установите 64-разрядную версию mysql для вашей системы.

Ответ 6

В Ubuntu 10.10 мне пришлось установить libmysqlclient16-dev.

Ответ 7

То, как я решил, это проверить mkmf.log, который в моем случае был где-то в . /gems/ruby -2.2.3/extensions/x86_64-linux/2.2.0/mysql2-0.4.2/mkmf.log

В моем случае произошла ошибка, из-за которой он не мог найти -lgmp, поэтому в нем отсутствовала библиотека gmp, поэтому была установлена ​​через apt-get, в этом случае libgmp-dev.

Ответ 8

Это может быть связано с обновлением бинарного файла mysql (в моем случае он использовал Mariadb-10.0.31), а при установке отсутствующей библиотеки (libmysqlclient-dev) я получил следующее сообщение о том, что было бы невозможно решить:

$ sudo apt-get install libmysqlclient-dev

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libmysqlclient-dev : Depends: libmysqlclient18 (= 5.5.58-0ubuntu0.14.04.1)

Но я решил проблему выше, установив libmariadbclient-dev как: -

 $ sudo apt-get install libmariadbclient-dev

Он установит libmysqlclient-dev, но сначала разрешит зависимость mariadb.