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.


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)


@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

¿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

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


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

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

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

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.


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

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.


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.



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 


0

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



0

Es posible que te hayas equivocado con el RVM.

Intenta hacerlo:

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

-1

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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.