Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

В 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

Ответ 2

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

brew install mysql

установить MySQL. С тех пор у меня не было проблемы с самоцветами mysql.

Ответ 3

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

Ответ 4

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

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

Ответ 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, чтобы найти ее.

Ответ 6

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

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

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

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

Ответ 7

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

sudo yum install mysql-devel

Ответ 8

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

Ответ 9

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

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

   sudo apt-get install ruby1.9.1-dev

Ответ 10

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

Ответ 11

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

Загрузите файл libmySQL.dll из более старого установщика InstantRails. Он доступен в репозитории InstantRails GitHub.

Затем скопируйте этот файл в папку Ruby/bin.

Теперь вы готовы идти;)

Ответ 12

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

sudo pacman -S base-devel

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

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

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

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

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

Ответ 13

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

sudo apt-get install libmysql-ruby libmysqlclient-dev

Ответ 14

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

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

Ответ 15

Я столкнулся с этой ошибкой на своем 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 без ошибок.

Ответ 16

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

$ 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

Смотрите этот пост (ВНИМАНИЕ: японский язык внутри).

Ответ 17

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

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

Ответ 18

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

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

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

Ответ 19

Я получил драгоценный камень, построенный на 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 (что там, где расположены мои исходники и встроенные файлы), поэтому я немного в тупике. Если у кого есть какие-то мысли, я вернусь через несколько часов сна.

Ответ 21

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

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

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

Ответ 23

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

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

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

Ответ 24

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

Ответ 25

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

Ответ 26

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

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

Ответ 27

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

 sudo apt-get install ruby-mysql libmysqlclient-dev

Ответ 28

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

Я хочу добавить, что если вы используете mariadb вместо mysql в CentOS 7, вам просто нужно установить пакет MariaDB-shared, чтобы исправить ошибку.

yum install MariaDB-shared -y