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

307

Я использую 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

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

  • 0
    Просто быстрое предположение: у вас есть заголовки файлов dev для MySQL
  • 0
    Как я могу получить эти заголовки файлов dev?
Показать ещё 1 комментарий
Теги:
rubygems

15 ответов

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

Для тех, кто может быть смущен принятым ответом, как и я, вам также необходимо установить заголовки 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)

  • 0
    @NoBugs Спасибо за дополнительную информацию :)
  • 1
    это сработало, когда у меня возникла проблема при попытке создать приложение с использованием ruby на рельсах. он жаловался на то, что не может установить json, а bundler не может продолжить. установка ruby-devel сработала.
Показать ещё 12 комментариев
88

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
  • 0
    Это тот самый? mysql-devel.i686: файлы для разработки приложений MySQL
  • 0
    Бьюсь об заклад, да. Попробуйте.
Показать ещё 6 комментариев
46

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

$ sudo apt-get install ruby2.2-dev
  • 1
    и sudo apt-get установите ruby2.2-dev :) спасибо!
  • 0
    Вы правы, конечно! Я обновил свой ответ.
Показать ещё 3 комментария
24

кажется, что

yum install ruby-devel

было достаточно для выполнения

gem install datamapper

потом.

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

yum install gcc gcc-c++

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

  • 1
    Я получал очень странную ошибку, без четкого сообщения, и это было потому, что пакеты gcc не были установлены. :( Этот пост заставил меня вспомнить этот основной шаг.; P
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
8

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

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

Если у вас установлен жемчуг и рубин, и вы не можете установить рельсы. Затем установите ruby ​​dev lib.

sudo apt-get install ruby-dev

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

  • 0
    У меня есть Ubuntu 16.04LTS. Я думаю, то же самое будет для другой предыдущей версии.
  • 0
    Спасибо! Это работает отлично!
2

Red Hat, Fedora:

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

Для тех, кто все еще испытывает проблемы, например, я (я использую 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
sudo apt-get install ruby-dev

Эта команда решила проблему для меня!

1

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

xcode-select --install
  • 0
    да, это была проблема. Большое спасибо!
0

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

0

в openSUSE:

zypper in ruby-devel

Работает со мной:)

0

Мое первоначальное решение состояло в том, чтобы разрешить вышеупомянутые ошибки, установив 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 Project. Вы также можете найти ответы на другие вопросы.

-2

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

export PATH = $PATH:/usr/src/ruby-xxxxxx

Ещё вопросы

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