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 intento instalar gema ...
sudo gem install --http-proxy <host address>:<port> 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 es el problema, busqué en Google y encontré estos
instalación de gemas: no se pudo construir la extensión nativa de gemas (no se pueden encontrar los archivos de encabezado) : las instrucciones aquí parecen ser específicas para la gema que se está instalando.
Cómo instalar json gem: no se pudo construir la extensión nativa de gem Esto parece ser un error ligeramente diferente.
¿Alguna pista? ¡Gracias!
/usr/lib/ruby/ruby.h
archivo, si está presente, muéstrenos un mensaje de error degem_make.out
.Respuestas:
Actualización de la era moderna, como lo afirma mimoralea :
o, de forma genérica:
El primer enlace que ha publicado es exactamente su caso: no hay instalado ningún entorno de desarrollo ruby. Se necesita env de desarrollo para compilar extensiones de ruby, que en su mayoría están escritas
C
. Proxy no tiene nada que ver con el problema: todo se descarga bien, solo falla la compilación.Le sugiero que instale el paquete
ruby-dev
(ruby-devel
para distribuciones basadas en rpm) en su máquina de destino.gcc
paquete podría ser necesario también.Tratar:
O, para la distribución Redhat:
O, para [abierto] SuSE:
fuente
ruby-dev
suruby-devel
. Aquí es donde encontré lo que necesitaba exactamente: digitalocean.com/community/articles/…sudo zypper install ruby-devel
para openSUSEruby2.2-dev
(o la versión que haya instalado).Para Xcode 11 en macOS 10.14 , esto puede suceder incluso después de instalar Xcode e instalar herramientas de línea de comandos y aceptar la licencia con
El problema es que Xcode 11 incluye el SDK de macOS 10.15 que incluye encabezados para ruby2.6, pero no para ruby2.3 de macOS 10.14. Puede verificar que este sea su problema ejecutando
que en macOS 10.14 con Xcode 11 imprime la ruta inexistente
Sin embargo, Xcode 11 instala un SDK de macOS 10.14 dentro
/Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk
. No es necesario contaminar los directorios del sistema instalando los archivos de encabezado antiguos como se sugiere en otras respuestas. En cambio, al seleccionar ese SDK, se encontrarán los encabezados ruby2.3 apropiados:Esto ahora debería imprimirse correctamente
Del mismo modo,
gem install
debería funcionar mientras ese SDK está seleccionado.Para volver al SDK de Xcode actual, use
fuente
En caso de que esté usando ruby 2.0 o 2.2 (gracias @ patrick-davey) o 2.3 (gracias @juanitofatas).
Y obtienes el patrón aquí ...
fuente
sudo apt-get install ruby2.2-dev
E: Unable to locate package ruby2.2-dev
E: Couldn't find any package by regex 'ruby2.2-dev'
sudo apt-add-repository -y ppa:brightbox/ruby-ng && sudo apt-get update && sudo apt-get install -y ruby2.2-dev
También encontré este problema porque instalé Ruby en Ubuntu a través de brightbox , y pensé que ruby-dev es el tronco de ruby. Entonces no lo instalé. Instalar ruby2.3-dev lo arregla:
fuente
Para aquellos que obtienen esto en Mac OS X, es posible que deba ejecutar el siguiente comando para instalar las herramientas de línea de comandos XCode, incluso si ya tiene XCode instalado:
También debe aceptar los términos y condiciones de XCode ejecutando el siguiente comando:
fuente
su - $USER -c 'xcode-select --install'
Tuve un problema similar al usar cygwin para ejecutar el siguiente comando:
Lo resolví instalando los siguientes paquetes de cygwin:
fuente
/cygdrive/z/.gem/ruby/extensions/x86-cygwin/json-1.8.3/json/ext/parser.so: [BUG] Segmentation fault at 0x0001b8
rm -rf ~/.gem/
y volviendo a emitir el comando.ruby-dev
en frambuesa piLa solución más votada no funcionó en mi máquina (linux mint 18.04). Después de una cuidadosa mirada, descubrí que faltaba g ++. Resuelto con
fuente
make
y tambiéng++
solucioné mi problema en Ubuntu 18.04!en caso de que uses SUSE
fuente
sudo zypper in ruby-devel
.Xcode 11 / macOS Catalina
En Xcode 11 / macOS Catalina, los archivos de encabezado ya no están en la ubicación anterior y en la anterior
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
archivo anterior ya no está disponible.En cambio, los encabezados ahora están instalados en el
/usr/include
directorio de la ruta actual del SDK:La mayor parte de este directorio se puede encontrar utilizando la salida de
xcrun --show-sdk-path
. Y si agrega esta ruta a laCPATH
variable de entorno, cree scripts (incluidos los llamados víabundle
) generalmente podrán encontrarla.Resolví esto configurando mi
CPATH
en mi.zshrc
archivo:Después de abrir un nuevo shell (o ejecutar
source .zshrc
), ya no recibo el mensaje de error mkmf.rb no puedo encontrar los archivos de encabezado para ruby en /usr/lib/ruby/ruby.h y los rubygems se instalan correctamente.fuente
Mojave 10.14.6
yXCode 11.3.1
. Muchas gracias, me tomó 1 día para resolver esto: /En Fedora 21 en adelante, simplemente abre una terminal e instala los archivos de Ruby Development como root.
fuente
Es posible que deba instalar gcc después de instalar ruby-devel
fuente
Xcode -> Preferencias -> Ubicaciones
cambiar las herramientas de línea de comandos a Xcode 11.2.1
fuente
En Mac 10.14, los archivos de encabezado no parecen estar instalados en el lugar correcto. En lugar de cambiar las rutas como las otras soluciones, pude ejecutar esto:
Siga las instrucciones y resolvió este problema para mí.
fuente
Debe instalar todo el rubí y no solo el paquete mínimo. El comando correcto para usar es:
El siguiente comando tampoco instalará un ruby completo:
fuente
Para Ubuntu 18, después de verificar el archivo de registro mencionado durante la instalación
Resultados registrados en /var/canvas/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/nio4r-2.5.2/gem_make.out
con
Me di cuenta de que
make
no se encuentra. Así instalado porTodo funcionó.
fuente
pruébalo para ubuntu 16.04
fuente