Ошибка установки MySQL2: не удалось построить нативное расширение GEM

StackOverflow https://stackoverflow.com/questions/3608287

Вопрос

У меня проблемы с некоторыми проблемами при попытке установки mysql2 GEM для рельсов. Когда я пытаюсь установить его, запустив bundle install или gem install mysql2 Это дает мне следующую ошибку:

Ошибка Установка MySQL2: Ошибка: Не удалось создать нативное расширение GEM.

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

Это было полезно?

Решение

На Ubuntu / Debian и другие распределения с использованием способности:

sudo apt-get install libmysql-ruby libmysqlclient-dev

Упаковка libmysql-ruby был поэтапным и заменен ruby-mysql. Этот где я нашел решение.

Если вышеуказанная команда не работает, потому что libmysql-ruby не может быть найдено, следующее должно быть достаточно:

sudo apt-get install libmysqlclient-dev

На Red Hat / Centos и другие распределения с использованием Yum:

sudo yum install mysql-devel

На Mac OS X с Домашний:

brew install mysql

Другие советы

Я на Mac и использую домашний Чтобы установить программы с открытым исходным кодом. Мне нужно было установить инструменты Mac DEV, чтобы установить домень, но после этого было просто:

brew install mysql

Чтобы установить MySQL. У меня нет проблем GEM MySQL.

вот решение для Пользователи Windows, Надеюсь, поможет!

Использование MySQL с Rails 3 на Windows

  • Установить RailsInstaller -> www.railsinstaller.org (Я установил его в C: Rails)

  • Установите mysql. (Я использовал MySQL 5.5) -> dev.mysql.com/downloads/installer/

--- для монтажа MySQL ----

Если у вас уже нет Эти два файла установлен, что вам может понадобиться, чтобы они получили свой MySQL

vcredist_x86.exe -> http://www.microsoft.com/download/en/details.aspx?id=5555.dotnetfx40_full_x86_x64.exe -> http://www.microsoft.com/download/en/details.aspx?id=17718.

Использовать машину разработчика установки по умолчанию

Mysql Server Config-
Порт: 3306.
Имя обслуживания Windows: MySQL55
MySQL Root Pass: root (вы можете изменить это позже)
(Имя пользователя: root)
Mysql Server Config-

--- для монтажа MySQL ----


--- Установите GEM MySQL2 ---

Важный: Сделайте это с помощью командной строки Git Bash(Это было установлено с RailsInstaller) -> Пуск / Git Bash

GEM Установка MySQL2 - '--with-mysql-lib = "c: program files mysql mysql server 5.5 lib" --with-mysql - включает = "C: Program files mysql mysql Server 5.5 включать"'

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

Наконец скопируйте файл libmysql.dll из
C: Файлы программы mysql mysql Server 5.5 lib
к
C: Rails Ruby1.9.2 bin

--- Установите GEM MySQL2 ---


Теперь вы сможете использовать приложение Rails с MySQL, если вы не уверены, как создать приложение Rails 3 с помощью MySQL.


--- Получить рельсы 3 приложение с MySQL ----

Откройте командную строку (не Git Bash) -> Пуск / CMD
Перейдите к вашей папке (C: сайты)
Создать новое приложение Rails

rails new world

Удалить файл c: сайты world public index.html
Отредактируйте файл c: sites world config marross.rb
Добавьте эту строку -> root: to => "Города # индекс"

Откройте командную строку (генерировать представления и контроллеры)

rails generate scaffold city ID:integer Name:string CountryCode:string District:string Population:integer



Отредактируйте файл c: sites world app models city.rb, чтобы выглядеть так

class City < ActiveRecord::Base
 set_table_name "city"
end

Отредактируйте файл c: sites world config database.yml, чтобы выглядеть так

development:
adapter: mysql2
encoding: utf8
database: world
pool: 5
username: root
password: root
socket: /tmp/mysql.sock

Добавить в Gemfile

gem 'mysql2'

Открыть командная строка Windows CMD, не Git Bash (запустить свое приложение!)
Перейдите к папке приложения (C: Sites World)

rails s

Откройте свой браузер здесь -> http: // localhost: 3000

--- Получить рельсы 3 приложение с MySQL ----

У меня есть несколько компьютеров, 32 и 64 процессоров битов, они работают на выпуске Ubuntu Linux, Maverick (10.10).

У меня была такая же проблема, и для меня,sudo apt-get install libmysql-ruby libmysqlclient-devсделал работу !!!

Еще один способ для MacOS пользователей

Если вы использовали «Brew» для установки MySQL:

gem install mysql2 -v 'x.x.x' -- --with-mysql-config=/usr/local/Cellar/mysql/y.y.y/bin/mysql_config

XXX = версия Gem MySQL2, которую вы хотите установить
yyy = версия mysql вы установили ls /usr/local/Cellar/mysql найти это.

Вы пытались использовать

 gem install mysql -- --with-mysql-lib=/usr/lib/mysql/lib 

Чтобы указать местоположение каталога TheBase, а также путь к библиотекам MySQL, которые необходимы для завершения установки GEM?

Источники:Ошибка установки GEM MySQL GEM: не удалось построить нативное расширение GEM GEM MySQL Forums :: Ruby :: Помощь, нуждающаяся в установке привязки MySQL для Ruby

Если вы используете Yum Try:

sudo yum install mysql-devel

Это решило мою проблему один раз в Windows:

subst X: "C:\Program files\MySQL\MySQL Server 5.5" 
gem install mysql2 -v 0.x.x --platform=ruby -- --with-mysql-dir=X: --with-mysql-lib=X:\lib\opt 
subst X: /D

Если у вас все еще возникли проблемы ...

Попробуйте установить

   sudo apt-get install ruby1.9.1-dev

У меня была эта проблема в Windows 7. Это, по-видимому, проблема несовместимости, и решение следующее:

Download the libmySQL.dll Файл из старых установщиков Instantrails. Это доступно из Instantrails github repo..

Далее скопируйте этот файл в свою папку Ruby / Bin.

Теперь вы хороши, чтобы пойти;)

Для Macos Mojave.:

gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

Я тоже получил эту ошибку. Решается путем установки пакетов разработки. Я использую арку, и это было:

sudo pacman -S base-devel

который установлен:

m4, autoconf, automake, bison, fakeroot, flex, libmpc, ppl, cloog-ppl, elfutils, gcc,
libtool, make, patch, pkg-config

Но я думаю, что это на самом деле нужно сделать и GCC. Вывод ошибки сказал (на моей машине, среди прочего):

«Вы должны сначала установить инструменты разработки».

Так что это было очевидное решение, и это помогло.

Вы должны установить некоторые зависимости

sudo apt-get install libmysql-ruby libmysqlclient-dev

На Debian протяните пакет, который работал для меня, был default-libmysqlclient-dev

sudo apt-get update && apt-get install -y default-libmysqlclient-dev

Я работал в этой ошибке на моем Mac и обнаружил, что мне нужно было обновить с MySQL 32BIT в MySQL 64 бита, чтобы получить эту ошибку, чтобы уйти. Я работал OSX 10.6 на Intel MacBook Pro с Ruby 1.9.2 и Rails3.0.0

Мне также нужно было установить Xcode, чтобы получить утилиты Unix, такие как «make», которые необходимы для компиляции GEM.

Как только это было сделано, я смог запустить GEM установить MySQL и GEM установить MySQL2 без ошибок.

В моем случае это помогло:

$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"

Потом:

gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/' -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib

Результат:

Building native extensions with: '--with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib'
This could take a while...
Successfully installed mysql2-0.5.2
Parsing documentation for mysql2-0.5.2
Installing ri documentation for mysql2-0.5.2
Done installing documentation for mysql2 after 0 seconds
1 gem installed

Смотрите этот пост (Предупреждение: Японский язык внутри).

Для Windows пользователь: вы устанавливаете lib и включите путь вашего mysql, например, если вы используете XAMPP, вы можете понравиться следующим образом:

gem install mysql2 -- '--with-mysql-lib="C:\xampp\mysql\lib" --withmysql-include="C:\xampp\mysql\include"'

Решение работает только на Mac OS X

Если вы установили MySQL с домороздой, что для меня удалили MySQL, и устанавливая MySQL Community Edition через веб-сайт MySQL (https://www.mysql.com/).

После установки просто повторно введите команду на gem install mysql2 или при необходимости, sudo gem install mysql2, если вы получаете разрешение, запрещенные проблемы.

Я получил драгоценный камень, построенный на Mac OS X 10,6,6 к 1), обеспечивая установку пакета инструментов разработчика 2) загрузка текущего пакета MySQL (5.5.8 в моем случае) от источника 3) Установка инструмента CMAKE.ORG 4 ) После инструкции в разделе 2.11 установки-источника из файлов распределения MySQL 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/includeGEM построен успешно, но в документации есть два ошибки, на которые RDOC и RI жалуются. Но теперь, когда я пытаюсь требовать «MySQL2», я получаю

LoadError: no such file to load -- mysql2/mysql2

Я надеялся, что ошибка, которую я бы получил, это то, что libmysqlclient.16.dylib не может быть найден, потому что мы подумали, что в другом посте (поиск install_name_tool).

Мой путь имеет / usr / local / mysql в нем (вот где расположены мои источники и созданные файлы), поэтому я немного ошеломлен. Если у кого-то есть мысли, я проверю через несколько часов сна.

Если по-прежнему получить ошибку, затем следуйте инструкциям установки GEM MySQL2 на рельсах 3 на -

http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-ruby-192-and.html.

где большинство пользователей смогли установить GEM MySQL2.

После того, как вы получите исправленные проблемы MySQL-DEV, вам может потребоваться удалить Bad MySQL2. Посмотрите внимательно на сообщения после $ Bundle. Вам может понадобиться

rm -rf vendor/cache/
rm -rf ./Zentest

Это очистит плохую установку MySQL2, чтобы окончательную установку $ Bundle может создать хороший.

Загрузите правильную версию mysqllib.dll Тогда скопируйте его в Ruby Bin действительно работает для меня. Следуйте по этой ссылке MySQL2 GEM скомпилирован за неправильную библиотеку клиента MySQL

Получил «Вы должны сначала установить инструменты разработки». Ошибка при попытке установить GEM MySQL2 После обновления на Mac OS X горный лев. Отказ Очевидно, что это обновление удаляет компиляторы командной строки.

Чинить:

  • Я удалил мою очень старую версию XCode (запустил скрипт удаления в / разработчике / библиотеке). Затем удалил каталог / разработчик.
  • Пошел в AppStore и загрузил XCode.
  • Запустил Xcode и вошел в настройки -> Загрузки и установил инструменты командной строки.

Вы получаете эту проблему, потому что вы не устанавливаете MySQL. Перед установкой MySQL2 GEM. Установите mysql. После этого GEM MySQL2 будет установлен.

Я просто хотел добавить этот ответ специально для Пользователи Mac.

Мой сервер идеально работает отлично, пока не обновил свой Xcode. При запуске сервера моих рейсов ошибка была показана так

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

    /Users/user/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb --with-mysql-
    checking for rb_thread_blocking_region()... /Users/user/.rvm/rubies/ruby-1.9.3-  
    p448/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an    
    executable file. (RuntimeError)

И было предложено установить GEM MySQL2 в конце сообщения об ошибке. Поэтому, когда я попытался установить его, я получил ошибку, как указано выше в этом вопросе. Ошибка, которую я получил следующим образом

ERROR:  Error installing mysql2:
ERROR: Failed to build gem native extension.

Поэтому, как предложено в этом посте, я попробовал «Brew Instally MySQL», и что вышел, говоря, что версия MySQL так и так уже установлена. Но было предупреждение, прежде чем он говорил

Warning: You have not agreed to the Xcode license.
Builds will fail! Agree to the license by opening Xcode.app or running:
xcodebuild -license

Тогда я попробовал это sudo xcodebuild -license и тип «согласен» в конце. Вы должны быть root, чтобы согласиться на лицензию.

После этого я снова попробовал установить комплект, а потом все работает нормально, как обычно. [Даже благодаря этому обновлению Xcode у меня также была проблема с моей башней.

libmysql-ruby был поэтапно и заменен. Новая команда:

 sudo apt-get install ruby-mysql libmysqlclient-dev

Для тех, кто использует Windows 7 и 64-битный MySQL

Если вы хотите использовать 64-битный MySQL, вы должны следовать инструкциям здесь (также здесь).

Извините за это должен быть комментарий к Ответ Spacemonkey Но у меня не хватает репутации, чтобы сделать это.

Я хочу добавить, что если вы используете Mariadb вместо MySQL на Centos 7, вам просто нужно установить пакет MariaAdb, чтобы исправить ошибку.

yum install MariaDB-shared -y
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top