Error al instalar json gem ‘mkmf.rb no puede encontrar archivos de encabezado para ruby’

Por contexto, en un servidor remoto que tiene un firewall. Estoy configurando mi entorno a través de un proxy. Tengo ruby 1.8.7 . Cuando trato de instalar joya …

 sudo gem install --http-proxy : json 

Obtuve el siguiente error:

 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 

Como no estaba seguro de cuál era el problema, busqué en Google y encontré estos

  • Instalación de gem: no se pudo construir la extensión nativa de gem (no se pueden encontrar los archivos de encabezado) : las instrucciones aquí parecen ser específicas para la gem que se está instalando.

  • Cómo instalar la gem json – Error al construir la extensión nativa de la gem Este parece ser un error ligeramente diferente.

¿Algún consejo? ¡Gracias!

Actualización de la era moderna, según lo declarado por mimoralea :

En caso de que estés usando ruby ​​2.0 o 2.2 (gracias @ 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 

o, manera genérica:

 sudo apt-get install ruby`ruby -e 'puts RUBY_VERSION[/\d+\.\d+/]'`-dev 

El primer enlace que ha publicado es exactamente su caso: no hay un entorno de desarrollo ruby ​​instalado. El entorno de desarrollo es necesario para comstackr las extensiones de ruby, que en su mayoría están escritas en C Proxy no tiene nada que ver con el problema: todo está bien descargado, solo falla la comstackción.

Le sugiero que instale el paquete ruby-dev ( ruby-devel para distribuciones basadas en rpm) en su máquina de destino. gcc paquete gcc puede ser necesario también.

Tratar:

 $ sudo apt-get install ruby-dev 

O bien, para la distribución de Redhat:

 $ sudo yum install ruby-devel 

O bien, para [abrir] SuSE:

 $ sudo zypper install ruby-devel 

En caso de que estés usando ruby ​​2.0 o 2.2 (gracias @ patrick-davey) o 2.3 (gracias @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 

Y obtienes el patrón aquí …

También me encontré con este problema porque instalé Ruby en Ubuntu a través de Brightbox , y pensé que Ruby-dev es el baúl de Ruby. Entonces no instalé. Instalar ruby2.3-dev lo corrige:

 sudo apt-get install ruby2.3-dev 

Tuve un problema similar al usar cygwin para ejecutar el siguiente comando:

 $ gem install rerun 

Lo resolví instalando los siguientes paquetes de cygwin:

  • ruby-devel
  • libffi-devel
  • gcc-core
  • gcc-g ++
  • hacer
  • automake1.15

en caso de que uses SUSE

 sudo yast2 -i ruby-devel 

Para aquellos que están obteniendo esto en Mac OS X, es posible que necesites ejecutar el siguiente comando para instalar las herramientas de línea de comandos de XCode, incluso si ya tienes instalado XCode:

 sudo xcode-select --install 

También debe aceptar los términos y condiciones de XCode ejecutando el siguiente comando:

 sudo xcodebuild -license 

La solución más votada no funcionó en mi máquina (linux mint 18.04). Después de una mirada cuidadosa, encontré que g ++ faltaba. Resuelto con

sudo apt-get install g ++

En Fedora 21 y posteriores, simplemente abra un terminal e instale los archivos de Ruby Development como root.

 dnf install ruby-devel 

Es posible que deba instalar gcc después de instalar ruby-devel