встановити 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

Що тут не так? У встановленому рубіні 1.8.7. та останні рубігми 1.3.7.


Лише швидка здогадка: чи є у вас файли-заголовки розробників для MySQL
DrColossos

Як я можу отримати ці розробники файлів для розробників?
Тім

1
Я робив це в Ubuntu, роблячи наступне: apt-get install ruby-dev rubygems gem install mysql - with-mysql-config = / usr / bin / mysql_config Все працює чудово.
Іван Карраско Кіроз

Відповіді:


757

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

sudo apt-get install ruby-dev

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

sudo apt-get install ruby-all-dev

Якщо ви використовуєте більш ранню версію ruby ​​(наприклад, 2.2), вам потрібно буде запустити:

sudo apt-get install ruby2.2-dev

(де 2.2 - бажана версія Ruby)


@NoBugs Дякую за додаткову інформацію :)
Брайан Лейсі

1
це спрацювало, коли у мене виникли проблеми при спробі створити додаток, використовуючи рубін на рейках. він скаржився на те, як він не може встановити json, і постачальник не може продовжувати. установка ruby-devel працювала.
Джек

2
Окрім ruby-dev, опублікованого @NoBugs вище, мені також знадобився libmysqlcient-dev на Ubuntu (12.04). (Або просто дивіться відповідь Дебіана / Ubuntu Даміана Новака нижче.)
Джон Гарвін

1
Працював для мене на RHEL6, коли у мене виникли проблеми з установкою jekyll.
Девід Мейсон

Це допомогло мені встановити fpm, ймовірно, допомагає встановити будь-яке програмне забезпечення, засноване на рубіні. Я звик yum -y install gcc ruby-devel rubygems.
Золтан

91

Червона Шапочка, Федора:

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 Повідомте мене, чи працює він.
Nowaker

Я щойно тут мав цю проблему: stackoverflow.com/questions/6297751/… Гарне рішення!
Кевін Браун

Те, що ви говорите, потрібно, але це потрібно, щоб виправити повідомлення про помилку, це рубінове розробка.
Едвард Андерсон

BTW в системі RedHat є ruby-devel.
texasbruce

50

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

$ sudo apt-get install ruby2.2-dev

На фейдорі 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

Якщо у вас встановлено дорогоцінний камінь і рубін, і ви не можете встановити рейки, то встановіть rubin dev lib.

sudo apt-get install ruby-dev

Це працює для мене. Я спробував інше рішення.


У мене є Ubuntu 16.04LTS. Я думаю, те саме буде і в іншій попередній версії.
Хафіз Шехбаз Алі

2

Червона Шапочка, Федора:

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 Project . Ви також можете знайти відповіді на інші потреби.



1

Вам потрібно встановити наступні пакети:

  • рубін-дев

  • gcc

  • libffi-dev

  • зробити

Ось команда для debian distro:

 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.