Ошибки Установка gem mysql2 через Bundler

Я пытаюсь установить камень mysql2 через Bundler, но он продолжает умирать со следующей ошибкой:

** executing command
/home/cc_rails/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems/installer.rb:483:in 'rescue in block in build_extensions': 
ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/home/cc_rails/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb --with-mysql-config=/usr/bin/mysql_config
checking for rb_thread_blocking_region()... yes
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=/home/cc_rails/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
--with-mysql-config
Gem files will remain installed for inspection.

Большинство вещей, которые я нашел через Googling, рекомендую передать параметр --with-mysql-config, чтобы исправить это. Итак, на основе:

$ which mysql_config
/usr/bin/mysql_config

Я добавил в конфигурацию Bundler следующее:

$ bundle config build.mysql2 --with-mysql-config='/usr/bin/mysql_config'

Однако, еще не удача - такая же ошибка, как и выше.

Поскольку он умирает с ошибкой mysql.h is missing, я проверил это, и он предположительно вокруг, просто не может быть найден Bundler.

$ find / -name mysql.h
/usr/include/mysql5/mysql/mysql.h

Любые мысли?

Ответ 1

Ответ был похож на тот, который был опубликован Wrikken - вот что я сделал, чтобы исправить его ради будущих читателей.

(Это для RHEL 5.5 - для Ubuntu/Debian/etc применяются одинаковые, но разные команды.)

Выполнение sudo yum list installed распечатает все установленные пакеты на вашем компьютере (обратите внимание: yum на RHEL требуется добавить репозиторий Red Hat Network [я использую EPEL] и запустите его через sudo).

У меня были mysql и mysql-server, которые объясняли, почему MySQL работал нормально для каждого уже существующего приложения, но не mysql-devel, что необходимо для исправления ошибки mysql.h is missing и подобных других ошибок сборки.

Короче говоря, после mysqldump -u root -ppassword --all-databases > full-dump.sql для безопасности он был исправлен с помощью простого

sudo yum install mysql-devel

Ответ 2

Для Ubuntu необходимо установить следующее. libmysqlclient-DEV libmysqlclient16

Ответ 3

Для Mac с установкой mysql brew следующее решение устранило проблему для меня:

Я отредактировал файл mysql_config в /usr/local/Cellar/mysql/ 5.6.12/bin и удалил опции W-компилятора -Wno-null-conversion и -Wno-unused-private-field для cflags и cxxflags.

Это решило проблему с "gem install mysql2".

Ссылка: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html

Ответ 4

Вышеупомянутая проблема будет возникать, потому что пакет mysql-devel неправильно установлен в вашей системе. Я буду объяснять то же самое в Centos, как это исправить. Когда вы пытаетесь установить этот пакет,

    yum install mysql-devel

Иногда будет происходить некоторое столкновение с существующими пакетами, которые устанавливаются, если вы устанавливаете инструмент MySql-Administrative и браузер запросов MySQL.

В этом случае вам нужно удалить все существующие пакеты mysql2 и снова установить его.

    rpm -qa -last | grep -i mysql
    yum remove MySQL-server-5.5.27-1.rhel5
    yum remove MySQL-client-5.5.27-1.rhel5
    yum remove mysql-gui-tools-5.0r12-1rhel4
    yum remove mysql-query-browser-5.0r12-1rhel4-a

Итак, вы можете удалить все объекты mysql, отображаемые с rpm -qa, как указано выше.

Затем вы можете установить mysql-сервер и mysql-клиент.

    yum install mysql-server
    yum install mysql-client

Теперь вы устанавливаете пакет mysql-devel.

    yum install mysql-devel

Теперь нет столкновений пакетов, и вы можете установить драгоценный камень mysql2.

    gem install mysql2 -v '0.3.11'

Теперь ваш гейм mysql2 будет успешно установлен, и вы хорошо пойдете.

Ответ 5

В моем случае проблема была неправильной mysql_config script. При вызове командной строки с параметром -cflags возвращается строка параметров, содержащих:

-Xclang -target-feature -Xclang -aes -Qunused-arguments

По какой-то причине вызов to_header ('mysql.h') в файле extconf.rb script завершится с ошибкой, если эта опция включена.

Что для меня работало, так это вручную отредактировать файл mysql_config, удалив ссылку на эти параметры из строки:

cflags="-I$pkgincludedir -Os -w -pipe -march=native -Xclang -target-feature -Xclang -aes -Qunused-arguments  -O2 -g -DDBUG_OFF " #note: end space!

который я переписал как:

cflags="-I$pkgincludedir -Os -w -pipe -march=native  -O2 -g -DDBUG_OFF " #note: end space!

Ответ 6

Я получил ту же ошибку. и для ubuntu 16. Мне пришлось написать ниже команду:

sudo apt-get install libmysqlclient-dev 

и он работает.

Ответ 7

Я знаю, что это древний, но если кто-то еще получит эту ошибку zlib, убедитесь, что вы набрали: Использование rvm

(любая версия, которую вы используете)

Я мог бы поклясться, что сделал это. Просто публиковать на случай, если кто-то вытаскивает волосы, и это помогает. Если не удачи.:)

Ответ 8

Я столкнулся с этой проблемой при установке пакета для redmine на Fedora 23. Решение, которое я нашел, это выпустить эту команду - sudo dnf install redhat-rpm-config.

Не только это исправить мою проблему с установкой mysql2, но и для nokogiri и redcarpet.