instalación de gemas: no se pudo construir la extensión nativa de gemas (no se pueden encontrar los archivos de encabezado)

356

Estoy usando Fedora 14 y tengo MySQL y MySQL server 5.1.42 instalados y ejecutándose. Ahora intenté hacer esto como usuario root:

gem install mysql

Pero me sale este error:

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é pasa aquí? En rubí instalado 1.8.7. y los últimos rubygems 1.3.7.

Tim
fuente
Solo una suposición rápida: ¿tiene los encabezados de archivos de desarrollo para MySQL
DrColossos
¿Cómo puedo obtener estos cabezales de archivos de desarrollo?
Tim
1
Lo hice en Ubuntu haciendo lo siguiente: apt-get install ruby-dev rubygems gem install mysql - with-mysql-config = / usr / bin / mysql_config Todo funciona bien.
Ivan Carrasco Quiroz

Respuestas:

757

Para aquellos que puedan estar confundidos por la respuesta aceptada, como yo lo estaba, también deben tener los encabezados ruby ​​instalados [ ruby-devel ].

El artículo que salvó mi piel está aquí .

Y esta es la solución revisada (tenga en cuenta que estoy en Fedora 13):

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

Para Debian y otras distribuciones que utilizan el empaquetado de estilo Debian, los encabezados de desarrollo de ruby ​​se instalan mediante:

sudo apt-get install ruby-dev

Para Ubuntu, los encabezados de desarrollo de ruby ​​se instalan mediante:

sudo apt-get install ruby-all-dev

Si está utilizando una versión anterior de ruby ​​(como 2.2), deberá ejecutar:

sudo apt-get install ruby2.2-dev

(donde 2.2 es la versión deseada de Ruby)

Brian Lacy
fuente
@NoBugs Gracias por la información adicional :)
Brian Lacy
1
Esto funcionó cuando tuve un problema al intentar crear una aplicación usando Ruby on Rails. se quejó de cómo no puede instalar json y el paquete no puede continuar. instalando ruby-devel trabajado.
Jack
2
Además del ruby-dev publicado por @NoBugs arriba, también necesitaba libmysqlcient-dev en Ubuntu (12.04). (O simplemente vea la respuesta Debian / Ubuntu de Damian Nowak a continuación.)
Jon Garvin
1
Trabajó para mí en RHEL6 cuando tuve problemas para instalar jekyll.
David Mason
Esto me ayudó a instalar fpm, probablemente ayude a instalar cualquier software basado en ruby. He utilizado 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
fuente
¿Es este? mysql-devel.i686: archivos para el desarrollo de aplicaciones MySQL
Tim
1
Por supuesto, se necesita mysql-devel. La pregunta es qué se necesita además. Tal vez intente esto: fedora-tunisia.org/?q=node/44 Avíseme si funciona.
Nowaker
Acabo de tener este problema aquí: stackoverflow.com/questions/6297751/… ¡ Buena solución!
Kevin Brown
Lo que usted dice es obligatorio, pero se necesita ruby-devel para corregir el mensaje de error en cuestión.
Edward Anderson el
Por cierto en el sistema RedHat es ruby-devel.
texasbruce
50

Para cualquiera que lea esto en 2015: si instaló el paquete ruby2.0, debe instalar la coincidencia ruby2.0-devpara obtener los encabezados Ruby adecuados. Lo mismo ocurre con ruby2.1y ruby2.2, etc. Por ejemplo:

$ sudo apt-get install ruby2.2-dev
Dror S.
fuente
En fedora 22:sudo dnf install ruby-devel
Geoffrey De Smet
¡Gracias! Ruby es tan raro a veces.
nelsonenzo
Lo mismo aplica para ruby ​​2.3.
Charles Roper el
24

parece que el

yum install ruby-devel

fue suficiente para mí realizar

gem install datamapper

después.

Es posible que necesite instalar otros paquetes:

yum install gcc gcc-c++

para poder construir extensiones nativas

andrej
fuente
1
Estaba recibiendo un error muy extraño, sin un mensaje claro, y fue porque los paquetes gcc no estaban instalados. :( Esta publicación me hizo recordar este paso básico.; P
BrunoJCM
9

Los usuarios de MAC pueden enfrentar este problema cuando las herramientas de xcode no están instaladas correctamente. A continuación se muestra el comando para deshacerse del problema.

xcode-select --install
Ajit Singh
fuente
Sí, ese era el problema. ¡Muchas gracias!
Eduard Ghinea
Y entonces este sudo gem install -n /usr/local/bin cocoapods thumbsup
hyd00
8

Encontré la solución aquí .

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

Esta publicación me ayudó. Muchas gracias.

En Linux (Ubuntu 12.10) necesitaba ejecutar

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

antes de que pudiera correr con éxito

sudo gem install jekyll
qkrijger
fuente
4

Si tiene gem instalado y ruby ​​y no puede instalar rieles, instale ruby ​​dev lib.

sudo apt-get install ruby-dev

Esto funciona para mi. He intentado la solución diferente.

Hafiz Shehbaz Ali
fuente
Tengo Ubuntu 16.04LTS. Creo que lo mismo será para otra versión anterior.
Hafiz Shehbaz Ali
2

Red Hat, Fedora:

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

Para aquellos que todavía experimentan problemas, como yo (estoy usando Ubuntu 16.04), tuve que poner los siguientes comandos para poder instalar algunas gemas como bcrypt, pg y otras. Todos son similares a los anteriores, excepto uno.

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

Esto me permitió instalar gemas como, PG, bcrypt y recaptcha.

Miguel
fuente
1

Mi solución inicial fue resolver los errores anteriores instalando ruby-devel, patchy rubygems.

Mi problema era un poco diferente ya que bcrypt 3.1.11 todavía tenía problemas para compilar e instalar en Fedora 23. Necesitaba paquetes adicionales. Entonces, después de asegurarme de tener instalado lo anterior, todavía tenía problemas:

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

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

Desde aquí tuve que hacer lo siguiente:

  • Me aseguré de que no me faltara ninguna herramienta de compilación de C sudo dnf group install "C Development Tools and Libraries"

  • Luego corrí sudo dnf install redhat-rpm-configpara resolver el problema de gcc mencionado anteriormente.

Puedes encontrar un artículo aquí en el Proyecto Fedore . También puede encontrar respuestas a otras necesidades también.

Andrew Lobban
fuente
1
sudo apt-get install ruby-dev

¡Este comando me resolvió el problema!

Viduni Wickramarachchi
fuente
1

Necesita los siguientes paquetes instalados:

  • ruby-dev

  • gcc

  • libffi-dev

  • hacer

Aquí está el comando para la distribución de Debian:

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

en openSUSE:

zypper in ruby-devel

Funciona para mí :)

Raul Libório
fuente
0

Es necesario instalar redhat-rpm-config en. ¡Supongo que resolverá tu problema!

usuario3645907
fuente
0

Esto funcionó para mí:

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

Es posible que te hayas equivocado con el RVM.

Intenta hacerlo:

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

Solo para agregar la ruta al archivo ruby.h en mi RUTA,
por ejemplo:

RUTA de exportación = $ RUTA: / usr / src / ruby-xxxxxx

Mareg
fuente