Помилка встановлення mysql2: Не вдалося створити власне розширення Gem


485

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

Помилка встановлення mysql2: ПОМИЛКА: Не вдалося створити власне розширення Gem.

Як я можу це виправити та успішно встановити mysql2?


У моєму випадку ruby ​​2.1 жодної помилки не було, але вона замерзла протягом декількох хвилин. Відповідь Spacemonkey виправила це.
Луціо

Відповіді:


915

На дистрибутивах 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 .. чимало ідей? команда вище не працювала для мене ..
femi

37
Привіт, я використовую Ubuntu 12.04 з Ruby 1.9.3 та Rails 3.2.8, і в моєму випадку встановлення libmysqlclient-devбуло достатньо.
SMMousavi

2
Якщо ви використовуєте Mac OSX: оновіть до останньої версії XCode та встановіть Інструменти розвитку. У мене була та сама проблема встановлення mysql (навіть при використанні --with-mysql-config = / usr / local / mysql / bin / mysql_config)
Americo Savinon

2
Не знадобився libmysql-ruby, оскільки я встановив Ruby через RVM
Michael Lang

1
Для вікон спробуйте відповідь галочкою з stackoverflow.com/questions/19014117 / ...
nitigyan

60

Я на Mac і використовую домашню мову для встановлення програм з відкритим кодом. Мені довелося встановити інструменти mac Dev, щоб встановити домашню мову, але після цього це було просто:

brew install mysql

встановити mysql. З тих пір у мене не було проблеми з дорогоцінними каменями mysql.


3
Я отримую помилку навіть після цього. Чи повинен я пройти деякі варіанти, коли я роблю gem i mysql2 ??
hnprashanth

Після цього я не мав жодних проблем з встановленням ruby ​​gem mysql2 на Mac OSX Lion.
KrisG

3
Якщо це не допомагає, спробуйте brew link mysql --force.
Чак Бетсон

34

ось рішення для користувачів 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/uk/details.aspx?id=17718

Використовувати встановлення за замовчуванням Machine Developer Machine

Конфігурація сервера -MySQL
: 3306
ім'я служби Windows: MySQL55
mysql root root: root (ви можете змінити це пізніше)
(ім'я користувача: root)
-MySQL Server Config-

--- для установки mySQL ---


--- Встановіть mysql2 Gem ---

Важливо: Робіть це за допомогою командного рядка Git Bash (це було встановлено за допомогою railsinstaller) -> start / Git Bash

gem install mysql2 - '--with-mysql-lib = "c: \ Програмні файли \ MySQL \ MySQL Server 5.5 \ lib "--with-mysql-include =" c: \ Program Files \ MySQL \ MySQL Server 5.5 \ include "'

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

Остаточно скопіюйте файл libmysql.dll з
C: \ Програмні файли \ 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

rails new world

Видаліть файл c: \ Sites \ world \ public \ index.html
Редагуйте файл c: \ Sites \ world \ config \ route.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 ---


Дякую, проблема полягала в тому, що я використовував widnows PowerShell, а не нормальний командний рядок. зараз це працює :)
Danpe

хост повинен бути 127.0.0.1, і якщо пароль є номером, він повинен бути введений до
ланки

3
Використання XAMPP:gem install mysql2 -- --with-mysql-dir=C:\xampp\mysql
Mifeng

Подивіться на шлях - with-mysql-include: gem install mysql2 - --platform = ruby ​​--with-mysql-lib = "d: \ mariadb \ lib" --with-mysql-include = "d: \ mariadb \ include \ mysql "
Іван

@Mifeng чудово працював для мене, але я використовую GitBash і потрібні -- --with-mysql-dir="C:\xampp\mysql"без лапок, мої `` були зняті. Дякую
Mutmatt

20

У мене є кілька комп’ютерів, 32 та 64 бітний процесор, вони працюють на версії Ubuntu Linux, Maverick (10.10).

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


19

Для 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


а також для MacOS Catalina
Влад

17

Ще один спосіб для користувачів MacOS

Якщо ви використовували "варити" для встановлення mysql:

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

xxx = версія дорогоцінного каміння mysql2, яку ви хочете встановити
yyy = встановлена ​​версія mysql, ls /usr/local/Cellar/mysqlщоб знайти його.


Спробував ~ 10 відповідей на всілякі запитання тут ... Ви вирішили. Дякую :)
Стен

7

Ви спробували використовувати

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

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

Джерела: MySQL Gem Install ERROR: Не вдалося створити нативне розширення Gem Форуми MySQL :: Ruby :: Допомога, необхідна для встановлення MySQL прив'язки для Ruby


Працювали чудово. Мені довелося скористатися іншим шляхом, який я знайшов, зателефонувавши, which mysqlа потім знайшовши libзвідти каталог.
Джошуа Пінтер

7

Якщо ви використовуєте yum, спробуйте:

sudo yum install mysql-devel

Для мене це працювало в мікроінстанції Amazon EC2 на базі CentOS.
Леннон

5

Це вирішило мою проблему одного разу в 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

Я збирався опублікувати джерело, але бачу, що користувач Ritesh Kumar вже зробив це. Тож його заслуга, а не моя.
Карлос Парділья

Якщо Lib не має відмова папки:gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
Молодший Mayhé

5

Якщо у вас все ще виникають проблеми ...

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

   sudo apt-get install ruby1.9.1-dev

4

У мене виникла ця проблема в Windows 7. Це, мабуть, проблема несумісності, і рішення полягає в наступному:

Завантажте libmySQL.dllфайл у старшого інсталятора InstantRails. Він доступний у репортажі InstantRails GitHub .

Потім скопіюйте цей файл у папку Ruby / bin.

Тепер вам добре піти;)


1
Грн. :( Я спробував це, але все-таки потрапив помилка при спробі запуску bundle install.
aakoch

3

Я також отримав цю помилку. Вирішується встановленням пакетів розробки. Я використовую арку, і це було:

sudo pacman -S base-devel

що встановлено:

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

але я думаю, що це насправді потребувало make і gcc. Повідомлення про помилку (на моїй машині, серед іншого):

"Спочатку потрібно встановити інструменти розробки."

Тож це було очевидним рішенням і воно допомогло.


3

Вам доведеться встановити деякі залежності

sudo apt-get install libmysql-ruby libmysqlclient-dev

3

На Debian Stretch пакет, який працював на мене, був за замовчуванням-libmysqlclient-dev

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


3

У моєму випадку це допомогло:

$ 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

Дивіться цю публікацію (ПОПЕРЕДЖЕННЯ: Японська мова всередині).


3

У Ubuntu (18.04)

мені вдалося вирішити цю проблему, виконавши наступне:

sudo apt-get install build-essential libmysqlclient-dev
gem install mysql2

довідник


2

Я зіткнувся з цією помилкою на своєму mac і виявив, що мені потрібно оновити з mysql 32bit до mysql 64 біт, щоб ця помилка усунулася. Я працював OSX 10.6 на Intel macbook pro з рубіном 1.9.2 і rails3.0.0

Мені також потрібно було встановити xcode для того, щоб отримати unix утиліти типу "make", необхідні для компіляції дорогоцінного каміння.

як тільки це було зроблено, я зміг запустити gem install mysql і gem install mysql2 без помилок.


1

Для користувача Windows: Ви встановлюєте lib і включаєте шлях вашого mysql, наприклад, якщо ви використовуєте xampp, у вас може бути такий:

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

1

Рішення працює лише на Mac OS X

Якщо ви встановили MySQL з домашньою мовою, для мене працювало видалення MySQL та встановлення MySQL Community Edition через веб-сайт MySQL ( https://www.mysql.com/ ).

Після встановлення просто повторно введіть команду gem install mysql2або, якщо потрібно sudo gem install 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).

Мій $ PATH має / usr / local / mysql в ньому (саме там знаходяться моє джерело та вбудовані файли), тому я трохи спотикався. Якщо у когось є думки, я перевірю ще через кілька годин сну.



0

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

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

Це очистить погану установку mysql2, так що остаточна установка пакету $ може створити хорошу.



0

Отримав "Ви повинні спочатку встановити інструменти розробки". помилка при спробі встановити дорогоцінний камінь mysql2 після оновлення до Mac OS X Mountain Lion . Мабуть, що це оновлення видаляє компілятори командного рядка.

Виправити:

  • Я видалив свою дуже стару версію Xcode (запустив сценарій видалення в / Developer / Library). Потім видалили каталог / Developer.
  • Зайшли в AppStore і завантажили Xcode.
  • Запустив Xcode та зайшов у меню Налаштування -> Завантаження та встановив інструменти командного рядка.

0

У вас виникає ця проблема, оскільки ви не встановили MySql. Перед встановленням mysql2 gem. Встановити MySQL. Після цього встановити дорогоцінний камінь mysql2.


0

Я просто хотів додати цю відповідь спеціально для користувачів 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)

І була пропозиція встановити ges mysql2 в кінці повідомлення про помилку. Тож коли я спробував встановити його, я отримав помилку, як було сказано вище в цьому запитанні. Помилка, яку я отримав, полягає в наступному

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

Тому, як було запропоновано в цій публікації, я спробував "варити інсталяцію 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і в кінці введіть "погодитися". Ви повинні мати корінь, щоб погодитися з ліцензією.

Після цього я знову спробував встановити пакет, і тоді все працює нормально. [Навіть через це оновлення xcode у мене виникли проблеми і з моєю вежею.]


0

libmysql-ruby було припинено та замінено. Нова команда:

 sudo apt-get install ruby-mysql libmysqlclient-dev
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.