installation de gem: impossible de créer l'extension native de gem (impossible de trouver les fichiers d'en-tête)

356

J'utilise Fedora 14 et j'ai MySQL et le serveur MySQL 5.1.42 installés et en cours d'exécution. Maintenant, j'ai essayé de le faire en tant qu'utilisateur root:

gem install mysql

Mais je reçois cette erreur:

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

Qu'est-ce qui ne va pas ici? En rubis installé 1.8.7. et les derniers rubygems 1.3.7.

Tim
la source
Juste une supposition rapide: avez-vous les en-têtes de fichier de développement pour MySQL
DrColossos
Comment puis-je obtenir ces en-têtes de fichier dev?
Tim
1
Je l'ai fait dans Ubuntu en faisant ce qui suit: apt-get install ruby-dev rubygems gem install mysql - with-mysql-config = / usr / bin / mysql_config Tout fonctionne bien.
Ivan Carrasco Quiroz

Réponses:

757

Pour ceux qui peuvent être confus par la réponse acceptée, comme je l'ai été, vous devez également installer les en-têtes ruby [ ruby-devel ].

L'article qui a sauvé ma peau est ici .

Et voici la solution révisée (notez que je suis sur Fedora 13):

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

Pour Debian, et d'autres distributions utilisant un packaging de style Debian, les en-têtes de développement ruby ​​sont installés par:

sudo apt-get install ruby-dev

Pour Ubuntu, les en-têtes de développement ruby ​​sont installés par:

sudo apt-get install ruby-all-dev

Si vous utilisez une version antérieure de ruby ​​(telle que 2.2), vous devrez exécuter:

sudo apt-get install ruby2.2-dev

(où 2.2 est la version Ruby souhaitée)

Brian Lacy
la source
@NoBugs Merci pour les informations supplémentaires :)
Brian Lacy
1
cela a fonctionné lorsque j'ai eu un problème en essayant de créer une application en utilisant ruby ​​sur rails. il s'est plaint de la façon dont il ne peut pas installer json et bundler ne peut pas continuer. l'installation de ruby-devel a fonctionné.
Jack
2
En plus de ruby-dev publié par @NoBugs ci-dessus, j'avais également besoin de libmysqlcient-dev sur Ubuntu (12.04). (Ou, voyez juste la réponse Debian / Ubuntu de Damian Nowak ci-dessous.)
Jon Garvin
1
A travaillé pour moi sur RHEL6 lorsque j'ai eu du mal à installer jekyll.
David Mason
Cela m'a aidé à installer fpm, probablement à installer n'importe quel logiciel basé sur ruby. J'ai utilisé yum -y install gcc ruby-devel rubygems.
Zoltán
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
Nowaker
la source
Est-ce celui-ci? mysql-devel.i686: Fichiers pour le développement d'applications MySQL
Tim
1
Pour sûr, mysql-devel est nécessaire. La question est de savoir ce qui est en outre nécessaire. Essayez peut-être ceci: fedora-tunisia.org/?q=node/44 Faites-moi savoir si cela fonctionne.
Nowaker
Je viens d'avoir ce problème ici: stackoverflow.com/questions/6297751/… Bonne solution!
Kevin Brown
Ce que vous dites est requis, mais c'est ruby-devel qui est nécessaire pour corriger le message d'erreur en question.
Edward Anderson
BTW sur le système RedHat est ruby-devel.
texasbruce
50

Pour tous ceux qui liront ceci en 2015: si vous avez installé le package ruby2.0, vous devez installer la correspondance ruby2.0-devpour obtenir les en-têtes Ruby appropriés. Il en va de même pour ruby2.1et ruby2.2, etc. Par exemple:

$ sudo apt-get install ruby2.2-dev
Dror S.
la source
Sur fedora 22:sudo dnf install ruby-devel
Geoffrey De Smet
Je vous remercie! le rubis est tellement bizarre parfois.
nelsonenzo
Il en va de même pour ruby ​​2.3.
Charles Roper
24

il semble que le

yum install ruby-devel

me suffisait pour jouer

gem install datamapper

ensuite.

Il est possible que vous deviez installer un autre paquet:

yum install gcc gcc-c++

pour pouvoir construire des extensions natives

andrej
la source
1
J'obtenais une erreur très bizarre, sans message clair, et c'était parce que les paquets gcc n'étaient pas installés. :( Ce message m'a rappelé cette étape de base.; P
BrunoJCM
9

Les utilisateurs MAC peuvent rencontrer ce problème lorsque les outils xcode ne sont pas installés correctement. Vous trouverez ci-dessous la commande pour vous débarrasser du problème.

xcode-select --install
Ajit Singh
la source
ouais, c'était ça le problème. Merci beaucoup!
Eduard Ghinea
Et puis ce sudo gem install -n /usr/local/bin cocoapods thumbsup
hyd00
8

J'ai trouvé la solution ici .

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

Ce message m'a aidé. Merci beaucoup.

Sous Linux (Ubuntu 12.10), je devais exécuter

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

avant de pouvoir courir avec succès

sudo gem install jekyll
qkrijger
la source
4

Si vous avez installé gem et ruby ​​et que vous ne pouvez pas installer de rails, installez ruby ​​dev lib.

sudo apt-get install ruby-dev

Ça marche pour moi. J'ai essayé la solution différente.

Hafiz Shehbaz Ali
la source
J'ai Ubuntu 16.04LTS. Je pense qu'il en sera de même pour les autres versions précédentes.
Hafiz Shehbaz Ali
2

Red Hat, Fedora:

sudo dnf -y install gcc-c++ redhat-rpm-config ruby-devel gcc mysql-devel rubygems
mkungla
la source
2

Pour ceux qui rencontrent toujours des problèmes, comme moi (j'utilise Ubuntu 16.04), j'ai dû mettre les commandes suivantes afin d'obtenir des gemmes comme bcrypt, pg et d'autres installées. Ils sont tous similaires à ceux ci-dessus, sauf un.

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

Cela m'a permis d'installer des gemmes comme PG, bcrypt et recaptcha.

Mike
la source
1

Ma solution initiale a été de résoudre les erreurs ci-dessus en installant ruby-devel, patchet rubygems.

Mon problème était un peu différent car bcrypt 3.1.11 avait encore des problèmes de compilation et d'installation sur Fedora 23. J'avais besoin de packages supplémentaires. Donc, après m'être assuré d'avoir installé ce qui précède, j'avais toujours des problèmes:

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

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

De là, je devais faire ce qui suit:

  • Je me suis assuré que je ne manquais d'aucun outil de compilateur C sudo dnf group install "C Development Tools and Libraries"

  • Ensuite, j'ai couru sudo dnf install redhat-rpm-configpour résoudre le problème gcc répertorié ci-dessus.

Vous pouvez trouver un article ici sur Fedore Project . Vous pouvez également trouver des réponses à d'autres besoins.

Andrew Lobban
la source
1
sudo apt-get install ruby-dev

Cette commande a résolu le problème pour moi!

Viduni Wickramarachchi
la source
1

Vous avez besoin des packages suivants installés:

  • ruby-dev

  • gcc

  • libffi-dev

  • faire

Voici la commande pour la distribution debian:

 sudo apt install gcc ruby-dev rubygems libgmp-dev libgmp3-dev make 
rmpestano
la source
0

dans openSUSE:

zypper in ruby-devel

Fonctionne pour moi :)

Raul Libório
la source
0

Il est nécessaire d'installer redhat-rpm-config sur. Je suppose que cela résout votre problème!

user3645907
la source
0

Cela a fonctionné pour moi:

yum -y install gcc mysql-devel ruby-devel rubygems
Shveta Sachdeva
la source
0

Vous avez peut-être foiré le RVM.

Essaye de faire:

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

Juste pour ajouter un chemin vers le fichier ruby.h dans mon PATH
par exemple:

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

Mareg
la source