Проблема установки пакета: mysql.h отсутствует
в моем Mac OSX 10.6 32 бит, я могу установить mysql2 gem довольно легко, но не на мини-Mac 10.6 64-битный сервер.
Я установил MySQL 5.5.11 на неприятный сервер, а в моем домашнем Mac MySQL 5.5.0.m2
Как-то, когда я запускаю установку пакета, на сервере он пытается установить mysql2.0.3.2, находясь в домашней mysql2.0.2.6
Пожалуйста, не говорите мне
env ARCHFLAGS = "- arch x86_64" sudo gem install mysql2 --version '= 0.2.6' - --with-mysql-config =/usr/local/mysql/bin/mysql_config
Я пробовал это, не работает.
Включено/usr/local/mysql/bin в $PATH тоже не помогает.
Код ошибки:
Installing mysql2 (0.3.2) with native extensions /Users/administrator/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:533:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)
/Users/administrator/.rvm/rubies/ruby-1.9.2-p180/bin/ruby extconf.rb
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=/Users/administrator/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
--with-mysql-config
--without-mysql-config
Gem files will remain installed in /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.2 for inspection.
Results logged to /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.2/ext/mysql2/gem_make.out
from /Users/administrator/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:511:in `block in build_extensions'
from /Users/administrator/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:486:in `each'
from /Users/administrator/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:486:in `build_extensions'
from /Users/administrator/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:159:in `install'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/source.rb:96:in `install'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/installer.rb:55:in `block in run'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/spec_set.rb:12:in `block in each'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/spec_set.rb:12:in `each'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/spec_set.rb:12:in `each'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/installer.rb:44:in `run'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/installer.rb:8:in `install'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/cli.rb:225:in `install'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor/task.rb:22:in `run'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor.rb:246:in `dispatch'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor/base.rb:389:in `start'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/bin/bundle:13:in `<top (required)>'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/bin/bundle:19:in `load'
from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/bin/bundle:19:in `<main>'
Ответы
Ответ 1
Я попробовал все решения, размещенные здесь, но не повезло. Я повторно запустил mysql с доморощенным пару раз и до сих пор не повезло. Затем я наткнулся на сообщение в блоге с решением.
Я отредактировал файл mysql_config в /usr/local/Cellar/mysql/5.6.12/bin
и удалил
параметры W-компилятора
-Wno-null-conversion
и
-Wno-unused-private-field
для флагов и cxxflags.
Это решило проблему с gem install mysql2
и bundle install
Ссылка: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html
Ответ 2
Я установил пакет в репозитории redmine и получил то же сообщение об ошибке:
mysql.h отсутствует. проверьте свою установку mysql и повторите попытку.
Запуск Fedora 16 64 бит, все, что я сделал, это установить mysql-devel
(пакет разработки) из дистрибутива rpm, и проблема была решена!
Итак, я думаю, вы могли бы просто
yum install mysql-devel
или apt - получить недостающий пакет devel.
Ответ 3
для людей, которые не использовали brew для установки mysql и используют mysql 5.6 и выше:
в соответствии с этим ответом
вам нужно отредактировать mysql_config
, который был помещен в моем случае: /usr/local/mysql-5.6.12-osx10.7-x86_64/bin
и измените cflags
и cxxflags
на:
cflags="-I$pkgincludedir -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
cxxflags="-I$pkgincludedir -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
после этих манипуляций
$ gem install mysql2 -v '0.3.13'
идет безупречно
Ответ 4
Хорошо, ребята, я решил:
$ sudo brew install mysql
$ sudo env ARCHFLAGS="-arch i386" gem install mysql -- \
--with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \
--with-mysql-include=/usr/local/mysql/include
источник: http://wonko.com/post/how-to-install-the-mysqlruby-gem-on-mac-os-x-leopard
ИЛИ:
$sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- \
--with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \
--with-mysql-include=/usr/local/mysql/include
Если ваша версия mysql 64Bits
После этого у меня было много проблем, потому что если я хочу создать базу данных:
$: bundle exec rake db:reset
i получал эту ошибку:
dyld: lazy symbol binding failed: Symbol not found: _mysql_init
Referenced from: /Users/workdreamer/Sites/cavortify/implementation/cavortify/mysql/ruby/1.8/gems/mysql-2.8.1/lib/mysql_api.bundle
Expected in: flat namespace
dyld: Symbol not found: _mysql_init
Referenced from: /Users/workdreamer/Sites/cavortify/implementation/cavortify/mysql/ruby/1.8/gems/mysql-2.8.1/lib/mysql_api.bundle
Expected in: flat namespace
Решение: В вашем gemfile добавить: gem "ruby-mysql"
Хорошо, полтора дня, чтобы найти решение.
Приятного дня!
Ответ 5
Этот метод предназначен для Rails 3.1.0 (и, надеюсь, вверх) на 64-битной машине. Я использовал Ruby-1.9.2-p180.
Этот блог ответил на это: http://www.tatvartha.com/2010/10/installing-mysql-gem-with-bundler-on-snow-leopard/
В принципе, метод выше: $sudo env ARCHFLAGS = "- arch x86_64" gem install mysql - --with-mysql-config =/usr/local/mysql/bin/mysql_config
может работать, но без пакета.
Чтобы сделать это со связкой, сначала нужно запустить это на терминале:
bundle config build.mysql2 --with-mysql-config=/usr/local/mysql/bin/mysql_config
Обратите внимание на "mysql2", а не на "mysql", как показано в этом блоге.
Это добавляет конфигурацию в файл ~/.bundle/config
Затем добавьте это в ~/.bash_profile:
export ARCHFLAGS="-arch x86_64"
То же самое происходит с сообщением bundler, чтобы запустить команду поверх этого сообщения.
Ответ 6
Единственный способ заставить это работать - установить версию mysql для x64. Я только что использовал .dmg, расположенный здесь http://dev.mysql.com/downloads/mysql/, и он работал как шарм. Хотел бы я получить 4 часа назад, чтобы понять это.
Ответ 7
Это работало для меня на моем Mac OSX Lion:
sudo env ARCHFLAGS="-I/usr/local/include/mysql/mysql -pipe -fPIC -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL" gem install mysql -- --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/lib/mysql/mysql --with-mysql-include=/usr/local/include/mysql/mysql --with-mysql-config=/usr/local/bin/mysql_config
Этот блог ответил на него.
Ответ 8
Убедитесь, что установлен gcc. Если это не так, вы получите то же сообщение об ошибке.
Вы можете проверить файл результатов/журнала, который он упоминает, для получения дополнительных сведений о причине.
Ответ 9
Проводя это, где бы я ни был - надеюсь, это поможет кому-то и сэкономит им много времени.
Я вырыл через 2 дня интернет и Stack Overflow, и только когда я нашел эту ссылку, а затем начал работать через этот билет для mysql2, что я действительно решил проблему.
С моей настройкой (как объяснено в билете), компиляторы -Wno-null-conversion -Wno-unused-private-field сломались бы и дали бы мне ошибку, которая была не совсем правильной, а именно:
mysql.h is missing. please check your installation of mysql and try again
Ответ 10
Моя проблема была результатом первой установки MySql через загружаемый двоичный файл. Он был первоначально установлен в версии 5.5.28. Затем я попытался установить через доморощенный. Brew установлена версия 5.6.x. ОДНАКО в процессе установки через доморощенный символическая ссылка для /usr/local/mysql по-прежнему указана на 5.5.28.
Обновите свою символическую ссылку в зависимости от того, какая версия была установлена с помощью доморощенного.
ex:/usr/local/mysql → /usr/local/Cellar/mysql/5.6.13/
Это может быть просто частью решения.
Ответ 11
Для тех, кто на Fedora 21, и вы уже установили mysql-devel:
yum install redhat-rpm-config
решил проблему для меня. видеть:
redhat docs
Ответ 12
Для mariadb:
sudo apt-get install libmariadbclient18 libmariadbclient-dev
Тогда
gem install mysql2
может быть успешно установлен.