web-dev-qa-db-fra.com

Erreur lors de l'installation de json gem 'mkmf.rb ne peut pas trouver les fichiers d'en-tête pour Ruby'

Pour le contexte, il sur un serveur distant qui a un pare-feu. Je configure mon environnement via un proxy. J'ai Ruby 1.8.7. Quand j'essaye d'installer gem ..

Sudo gem install --http-proxy <Host address>:<port> json

Je reçois l'erreur suivante:

Building native extensions.  This could take a while...
ERROR:  Error installing json:
        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/lib64/Ruby/gems/1.8/gems/json-1.8.1 for inspection.
Results logged to /usr/lib64/Ruby/gems/1.8/gems/json-1.8.1/ext/json/ext/generator/gem_make.out

Comme je ne savais pas quel était le problème, j'ai cherché sur Google et trouvé ces

Des allusions? Merci!

316
Navneet

Mise à jour de l'ère moderne, comme déclaré par mimoralea :

Si vous utilisez Ruby 2.0 ou 2.2 (merci @ patrick-davey).

Sudo apt-get install Ruby-dev
Sudo apt-get install Ruby2.0-dev
Sudo apt-get install Ruby2.2-dev
Sudo apt-get install Ruby2.3-dev

ou de manière générique:

Sudo apt-get install Ruby`ruby -e 'puts Ruby_VERSION[/\d+\.\d+/]'`-dev

Le premier lien que vous avez posté correspond exactement à votre cas: aucun environnement de développement Ruby n'est installé. Development env est nécessaire pour compiler Ruby extensions, qui sont pour la plupart écrites en C. Le proxy n'a rien à voir avec le problème: tout est bien téléchargé, seule la compilation échoue.

Je vous suggèrerais d'installer le paquet Ruby-dev (Ruby-devel pour les distributions basées sur le nombre de tours/minute) sur votre machine cible. Le package gcc pourrait également être nécessaire.

Essayer:

$ Sudo apt-get install Ruby-dev

Ou, pour la distribution Redhat:

$ Sudo yum install Ruby-devel

Ou, pour [ouvrir] SuSE:

$ Sudo zypper install Ruby-devel
682
Aleksei Matiushkin

Si vous utilisez Ruby 2.0 ou 2.2 (merci @ patrick-davey) ou 2.3 (merci @juanitofatas).

Sudo apt-get install Ruby-dev
Sudo apt-get install Ruby2.0-dev
Sudo apt-get install Ruby2.2-dev
Sudo apt-get install Ruby2.3-dev

Et vous obtenez le modèle ici ...

73
mimoralea

J'ai aussi rencontré ce problème parce que je installer Ruby sur Ubuntu via brightbox , et je pensais que Ruby-dev était la malle de Ruby. Donc je n'ai pas installé. Installer Ruby2.3-dev le corrige:

Sudo apt-get install Ruby2.3-dev
20
Juanito Fatas

Pour ceux qui l'obtiennent sous Mac OS X, vous devrez peut-être exécuter la commande suivante pour installer les outils de ligne de commande XCode, même si XCode est déjà installé:

Sudo xcode-select --install

Vous devez également accepter les conditions générales de XCode en exécutant la commande suivante:

Sudo xcodebuild -license
13
Juan De León

J'ai eu un problème similaire en utilisant cygwin pour exécuter la commande suivante:

$ gem install rerun

Je l'ai résolu en installant les packages cygwin suivants:

  • Ruby-Devel
  • libffi-devel
  • gcc-core
  • gcc-g ++
  • make
  • automake1.15
11
Kinifwyne

La solution la plus votée ne fonctionnait pas sur ma machine (linux 18/03). Après un regard attentif, j'ai trouvé que g ++ était manquant. Résolu avec

Sudo apt-get install g ++

10
Miles Davis

si vous utilisez SUSE

Sudo yast2 -i Ruby-devel
9
Prokur

Dans Fedora 21 et versions ultérieures, il vous suffit d'ouvrir un terminal et d'installer les fichiers de développement Ruby en tant que root.

dnf install Ruby-devel
4
emmojo

Vous devrez peut-être installer gcc après avoir installé Ruby-devel

1
bott