установка gem: не удалось создать собственное расширение gem (не удается найти файлы заголовков)


356

Я использую Fedora 14 и у меня установлены и работают MySQL и MySQL сервер 5.1.42. Теперь я попытался сделать это как пользователь root:

gem install mysql

Но я получаю эту ошибку:

Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/ruby.h


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/mysql-2.8.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

Что здесь не так? В установленном ruby ​​1.8.7. и последние рубины 1.3.7.


Просто быстрое предположение: у вас есть заголовочные файлы dev для MySQL
DrColossos

Как я могу получить эти заголовки файлов dev?
Тим

1
Я сделал это в Ubuntu, выполнив следующие действия: apt-get install ruby-dev rubygems gem install mysql - with-mysql-config = / usr / bin / mysql_config Все работает нормально.
Иван Карраско Quiroz

Ответы:


757

Для тех, кто может быть смущен принятым ответом, как и я, вам также нужно установить заголовки ruby [ ruby-devel ].

Статья, которая спасла мою шкуру, здесь .

И это пересмотренное решение (обратите внимание, что я на Fedora 13):

yum -y install gcc mysql-devel ruby-devel rubygems
gem install -y mysql -- --with-mysql-config=/usr/bin/mysql_config

Для Debian и других дистрибутивов, использующих упаковку в стиле Debian, заголовки разработки ruby ​​устанавливаются:

sudo apt-get install ruby-dev

Для Ubuntu заголовки разработки ruby ​​устанавливаются:

sudo apt-get install ruby-all-dev

Если вы используете более раннюю версию ruby ​​(например, 2.2), то вам нужно будет выполнить:

sudo apt-get install ruby2.2-dev

(где 2.2 - желаемая версия Ruby)


@NoBugs Спасибо за дополнительную информацию :)
Брайан Лейси

1
Это сработало, когда у меня возникла проблема с попыткой создать приложение с использованием ruby ​​на рельсах. он жаловался на то, что не может установить json, а bundler не может продолжить. установка ruby-devel сработала.
Джек

2
В дополнение к ruby-dev, опубликованному @NoBugs выше, мне также понадобился libmysqlcient-dev в Ubuntu (12.04). (Или просто посмотрите ответ Дамиана / Ubuntu Дамиана Новака ниже.)
Джон Гарвин

1
Я работал на RHEL6, когда у меня были проблемы с установкой jekyll.
Дэвид Мейсон

Это помогло мне установить fpm, возможно, поможет установить любое программное обеспечение на основе ruby. Я использовал yum -y install gcc ruby-devel rubygems.
Золтан

91

Red Hat, Fedora:

yum -y install gcc mysql-devel ruby-devel rubygems
gem install -y mysql -- --with-mysql-config=/usr/bin/mysql_config

Debian, Ubuntu:

apt-get install libmysqlclient-dev ruby-dev
gem install mysql

Arch Linux:

pacman -S libmariadbclient
gem install mysql

Это тот? mysql-devel.i686: файлы для разработки приложений MySQL
Тим

1
Наверняка mysql-devel нужен. Вопрос в том, что нужно кроме того. Может быть, попробуйте это: fedora-tunisia.org/?q=node/44 Дайте мне знать, если это работает.
Новакер

У меня просто была эта проблема здесь: stackoverflow.com/questions/6297751/… Хорошее решение!
Кевин Браун

То, что вы говорите, требуется, но это ruby-devel, который необходим для исправления рассматриваемого сообщения об ошибке.
Эдвард Андерсон

Кстати на RedHat система есть ruby-devel.
texasbruce

50

Для тех, кто читает это в 2015 году: если вам довелось установить пакет ruby2.0, вам нужно установить соответствующий, ruby2.0-devчтобы получить соответствующие заголовки Ruby. То же касается ruby2.1и ruby2.2т. Д. Например:

$ sudo apt-get install ruby2.2-dev

На Fedora 22:sudo dnf install ruby-devel
Джеффри Де Смет

Спасибо! Рубин иногда бывает странным.
Нельсонензо

То же самое касается рубина 2.3.
Чарльз Ропер

24

кажется, что

yum install ruby-devel

мне было достаточно, чтобы выполнить

gem install datamapper

после этого.

Возможно, вам понадобится установить другие пакеты:

yum install gcc gcc-c++

чтобы иметь возможность создавать собственные расширения


1
Я получал очень странную ошибку без четкого сообщения, и это было потому, что пакеты gcc не были установлены. :( Этот пост заставил меня вспомнить об этом основном шаге.; P
BrunoJCM

9

Пользователи MAC могут столкнуться с этой проблемой, если инструменты xcode установлены неправильно. Ниже приведена команда, чтобы избавиться от проблемы.

xcode-select --install

да, это была проблема. Большое спасибо!
Эдуард Гиня

А потом этот sudo gem install -n /usr/local/bin cocoapods Thumbsup
hyd00

8

Я нашел решение здесь .

# yum install mysql-devel gcc make
# gem install mysql -- --with-mysql-config=/usr/bin/mysql_config

8

Этот пост помог мне. Большое спасибо.

В Linux (Ubuntu 12.10) мне нужно было запустить

sudo apt-get install ruby
sudo apt-get install rubygems
sudo apt-get install ruby-dev

прежде чем я смог успешно бежать

sudo gem install jekyll

4

Если у вас установлен gem и ruby ​​и вы не можете установить rails, то установите ruby ​​dev lib.

sudo apt-get install ruby-dev

Меня устраивает. Я попробовал другое решение.


У меня есть Ubuntu 16.04LTS. Я думаю, то же самое будет для другой предыдущей версии.
Хафиз Шехбаз Али

2

Red Hat, Fedora:

sudo dnf -y install gcc-c++ redhat-rpm-config ruby-devel gcc mysql-devel rubygems

2

Для тех, кто все еще испытывает проблемы, как у меня (я использую Ubuntu 16.04), мне нужно было ввести следующие команды, чтобы установить некоторые гемы, такие как bcrypt, pg и другие. Все они похожи на приведенные выше, за исключением одного.

sudo apt-get install ruby-dev -y
sudo apt-get install libpq-dev -y
sudo apt-get install libmysqlclient-dev
sudo apt-get install build-essential patch -y

Это позволило мне установить такие гемы, как PG, bcrypt и recaptcha.


1

Мое первоначальное решение было решить вышеуказанные ошибки при установке ruby-devel, patchи rubygems.

Моя проблема немного отличалась, так как bcrypt 3.1.11 все еще имел проблемы с компиляцией и установкой на Fedora 23. Мне нужны были дополнительные пакеты. Итак, после того, как я установил вышеуказанное, у меня все еще были проблемы:

gcc: error: conftest.c: No such file or directory

gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory

Отсюда я должен был сделать следующее:

  • Я гарантировал, что мне не хватало каких-либо инструментов компилятора C sudo dnf group install "C Development Tools and Libraries"

  • Затем я побежал, sudo dnf install redhat-rpm-configчтобы решить проблему GCC, перечисленную выше.

Вы можете найти здесь запись о проекте Fedore . Вы также можете найти ответы на другие вопросы.



1

Вам нужны следующие пакеты:

  • рубиново-DEV

  • НКУ

  • libffi-DEV

  • делать

Вот команда для дистрибутива Debian:

 sudo apt install gcc ruby-dev rubygems libgmp-dev libgmp3-dev make 


0

Для этого необходимо установить redhat-rpm-config. Я думаю, это решит вашу проблему!



0

Возможно, вы ошиблись с RVM.

Стараться сделать:

\curl -sSL https://get.rvm.io | bash -s stable --rails

-1

Просто добавьте путь к файлу ruby.h в моем PATH,
например:

экспорт PATH = $ PATH: / usr / src / ruby-xxxxxx

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.