Ошибка установки mysql2: не удалось собрать собственное расширение gem

442

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

Ошибка при установке mysql2: ERROR: Не удалось создать собственное расширение gem.

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

  • 0
    В моем случае ruby 2.1 ошибка не отображалась, но она зависала на несколько минут. Spacemonkey ответ исправил это.
Теги:
rubygems

23 ответа

904
Лучший ответ

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

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 с Homebrew:

brew install mysql
  • 5
    у меня та же проблема на windows 7 .. есть идеи? команда выше не работает для меня ..
  • 35
    Здравствуйте, я использую Ubuntu 12.04 с Ruby 1.9.3 и Rails 3.2.8, и в моем случае достаточно было установить libmysqlclient-dev .
Показать ещё 11 комментариев
57

Я использую mac и использую homebrew для установки программ с открытым исходным кодом. Мне пришлось установить mac Dev инструменты для установки homebrew, но после этого это было просто:

brew install mysql

для установки mysql. С тех пор у меня не было проблемы с mysql gem.

  • 3
    Я получаю ошибку даже после этого. Должен ли я передать некоторые параметры, когда я делаю gem я mysql2 ??
  • 0
    После этого у меня не возникло проблем с установкой mysql2 ruby gem на Mac OSX Lion.
Показать ещё 2 комментария
35

вот решение для пользователей 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=5555dotNetFx40_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 ---


--- Установите mysql2 Gem ---

Важно: Сделать это с помощью Git Bash Командная строка (это было установлено с помощью railsinstaller) → start/ Git Bash

gem install mysql2 - '--with-mysql-lib = "c:\Program Files\MySQL\MySQL Server 5.5\lib" --with-mysql-include = "c:\Program Files\MySQL\MySQL Server 5.5\include"

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

Наконец, скопируйте файл libmysql.dll из
C:\Program Files\MySQL\MySQL Server 5.5\lib
к
C:\Rails\Ruby1.9.2\bin

--- Установите mysql2 Gem ---


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


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

Откройте командную строку (не Git Bash) → start/cmd
Перейдите в свою папку (c:\Sites)
Создайте новое приложение для рельсов

rails new world

Удалить файл c:\Sites\world\public\index.html
Отредактируйте файл c:\Sites\world\config\routes.rb
добавьте эту строку → root: to = > 'cities # index'

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

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

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

  • 0
    Вы использовали все правильные пробелы и тире и запятые?
  • 0
    Спасибо, проблема была в том, что я использовал PowerShell для widnows, а не обычную командную строку. сейчас работает :)
Показать ещё 8 комментариев
21

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

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

  • 1
    Потрясающие! Это работало отлично ..
7

Если вы используете yum try:

sudo yum install mysql-devel
  • 0
    У меня это работало в микро-инстансе Amazon EC2 на базе CentOS.
6

Пробовали ли вы использовать

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

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

Источники: Установка MySQL Gem ERROR: не удалось создать собственное расширение gem Форумы MySQL:: Ruby:: Справка, необходимая для установки привязки MySQL для Ruby

  • 0
    Работал отлично. Мне пришлось использовать другой путь, который я нашел, вызвав which mysql и затем найдя каталог lib оттуда.
5

Другой способ для пользователей MacOS

Если вы использовали "brew" для установки mysql:

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

x.x.x = версия драгоценного камня mysql2, которую вы хотите установить
y.y.y = версия mysql, которую вы установили ls /usr/local/Cellar/mysql, чтобы найти ее.

  • 0
    Попробовал ~ 10 ответов на все вопросы, заданные здесь ... Вы решили это. Спасибо :)
5

Если у вас все еще есть проблемы...

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

   sudo apt-get install ruby1.9.1-dev
4

У меня была проблема с моими окнами 7. Это, по-видимому, проблема несовместимости, и решение выглядит следующим образом: Загрузите файл mysql.dll из старого установщика InstantRails. Ссылка http://tinyurl.com/24ocp8u будет загружать только файл mysql.dll(ссылка на репозиторий svn для InstantRails). Затем скопируйте файл в папку Ruby/bin. Теперь вам хорошо идти;)

  • 1
    Хмм. :( Я попробовал это, но все еще получаю ошибку при попытке запустить bundle install .
3

Это решило мою проблему один раз в 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
  • 0
    Я собирался опубликовать источник, но я вижу, что пользователь Ritesh Kumar уже сделал это. Так что его заслуга, а не моя.
  • 0
    Если в вашей библиотеке нет папки opt: gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
3

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

sudo pacman -S base-devel

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

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

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

"Сначала вы должны установить средства разработки".

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

2

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

sudo apt-get install libmysql-ruby libmysqlclient-dev
2

Я столкнулся с этой ошибкой на своем mac и обнаружил, что мне нужно обновить с mysql 32bit до 64-разрядного mysql, чтобы эта ошибка исчезла. Я запускал OSX 10.6 на intel macbook pro с ruby ​​1.9.2 и rails3.0.0

Мне также понадобилось установить xcode, чтобы получить утилиты unix, такие как make, которые необходимы для компиляции драгоценного камня.

Как только это было сделано, мне удалось запустить gem install mysql и gem install mysql2 без ошибок.

  • 1
    ruby 1.6.2 или ruby 1._9_.2?
  • 0
    ruby 1.9.2 отредактировал мой ответ, чтобы отразить. Спасибо!
1

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

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

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

1

Для пользователей Windows: Вы устанавливаете путь lib и include вашего mysql, например, если вы используете xampp, вы можете иметь следующее:

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

Для тех, кто использует Windows 7 и 64-разрядную MySQL

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

Существует также настраиваемый 64-разрядный соединитель, который работает без хлопот.

0

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

Мой сервер работал отлично, пока я не обновил свой xcode. Во время запуска моего сервера rails ошибка была показана следующим образом:

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)

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

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

Итак, как было предложено в этом посте, я попробовал "brew установить 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 у меня также была проблема с моей башней.]

0

У вас возникает эта проблема, потому что вы не устанавливаете MySql. Перед установкой mysql2 gem. Установите MySQL. После этого монстр mysql2 будет установлен.

0

Получил "Сначала вы должны установить средства разработки". при попытке установить gem mysql2 после обновления до Mac OS X Mountain Lion. Очевидно, что это обновление удаляет компиляторы командной строки.

Чтобы исправить:

  • Я удалил свою очень старую версию Xcode (запустил удаление script в /Developer/Library ). Затем удалите каталог /Developer.
  • Пошел в AppStore и загрузил Xcode.
  • Запустил Xcode и перешел в "Настройки" → "Загрузки" и установил инструменты командной строки.
0

загрузить правильную версию mysqllib.dll, а затем скопировать ее в ruby ​​bin, действительно работает для меня. Следуйте этим ссылкам mysql2 gem, скомпилированным для неправильной клиентской библиотеки mysql

0

После устранения проблем с mysql-dev вам может потребоваться удалить плохую установку mysql2. Посмотрите внимательно на сообщения после установки пакета $bundle. Возможно, вам понадобится

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

Это очистит плохую установку mysql2, так что окончательная установка пакета $bundle может создать хороший.

0

Если вы все еще получаете ошибку, следуйте инструкциям по установке gq mysql2 на Rails 3 на -

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

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

0

Я получил драгоценный камень, построенный на Mac OS X 10.6.6, с помощью 1) Обеспечение установки пакета инструментов разработчика 2) Загрузка текущего пакета MySQL (5.5.8 в моем случае) из источника 3) Установка инструмента cmake из cmake.org 4) Следуя инструкциям в разделе 2.11 INSTALL-SOURCE из файлов дистрибутива mysql 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include Драгоценный камень построен успешно, но в документации, которую rdoc и ri жалуются, есть две ошибки. Но теперь, когда я пытаюсь потребовать "mysql2", я получаю

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню