Instalação do gem: falha ao criar a extensão nativa do gem (não é possível encontrar os arquivos de cabeçalho)


356

Estou usando o Fedora 14 e tenho o servidor MySQL e MySQL 5.1.42 instalado e em execução. Agora eu tentei fazer isso como usuário root:

gem install mysql

Mas eu recebo este erro:

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

O que há de errado aqui? No ruby ​​instalado 1.8.7. e as últimas rubygems 1.3.7.


Apenas um palpite rápida: você tem as fileheaders dev para MySQL
DrColossos

Como posso obter esses cabeçalhos de arquivo dev?
Tim

11
Eu fiz isso no Ubuntu, fazendo o seguinte: apt-get install ruby-dev rubygems gem install mysql - com-mysql-config = / usr / bin / mysql_config Tudo funciona bem.
Ivan Carrasco Quiroz

Respostas:


757

Para aqueles que podem estar confusos com a resposta aceita, como eu, você também precisa ter os cabeçalhos do ruby ​​instalados [ ruby-devel ].

O artigo que salvou minha pele está aqui .

E esta é a solução revisada (observe que estou no Fedora 13):

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

Para o Debian e outras distribuições usando o empacotamento no estilo Debian, os cabeçalhos de desenvolvimento ruby ​​são instalados por:

sudo apt-get install ruby-dev

Para o Ubuntu, os cabeçalhos de desenvolvimento ruby ​​são instalados por:

sudo apt-get install ruby-all-dev

Se você estiver usando uma versão anterior do ruby ​​(como 2.2), precisará executar:

sudo apt-get install ruby2.2-dev

(onde 2.2 é sua versão Ruby desejada)


@NoBugs Obrigado pela informação adicional :)
Brian Lacy

11
isso funcionou quando tive um problema ao tentar criar um aplicativo usando ruby ​​on rails. queixou-se de como não pode instalar o json e o bundler não pode continuar. a instalação do ruby-devel funcionou.
Jack

2
Além do ruby-dev publicado por @NoBugs acima, eu também precisava do libmysqlcient-dev no Ubuntu (12.04). (Ou então, basta ver a resposta Debian / Ubuntu por Damian Nowak abaixo.)
Jon Garvin

11
Trabalhou para mim no RHEL6 quando tive problemas para instalar o jekyll.
David Mason

Isso me ajudou a instalar o fpm, provavelmente ajuda a instalar qualquer software baseado em ruby. Eu usei 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

É este? mysql-devel.i686: Arquivos para desenvolvimento de aplicativos MySQL
Tim

11
Com certeza o mysql-devel é necessário. A questão é o que é necessário além disso. Talvez tente o seguinte: fedora-tunisia.org/?q=node/44 Deixe-me saber se funciona.
Agora,

Acabei de ter este problema aqui: stackoverflow.com/questions/6297751/… Boa solução!
Kevin Brown

O que você diz é necessário, mas é necessário o ruby-devel para corrigir a mensagem de erro em questão.
Edward Anderson

BTW no sistema RedHat é ruby-devel.
texasbruce

50

Para quem estiver lendo isso em 2015: se você instalou o pacote ruby2.0, precisará instalar a correspondência ruby2.0-devpara obter os cabeçalhos Ruby apropriados. O mesmo vale para ruby2.1e ruby2.2etc. Por exemplo:

$ sudo apt-get install ruby2.2-dev

No fedora 22:sudo dnf install ruby-devel
Geoffrey De Smet

Obrigado! Ruby às vezes é tão estranho.
Nelsonenzo

O mesmo vale para o ruby ​​2.3.
Charles Roper

24

parece que o

yum install ruby-devel

foi o suficiente para eu realizar

gem install datamapper

mais tarde.

É possível que você precise instalar outros pacotes:

yum install gcc gcc-c++

para poder construir extensões nativas


11
Eu estava recebendo um erro muito estranho, sem uma mensagem clara, e era porque os pacotes gcc não foram instalados. :( Este post me fez lembrar desta etapa básica.; P
BrunoJCM

9

Os usuários de MAC podem enfrentar esse problema quando as ferramentas xcode não estão instaladas corretamente. Abaixo está o comando para se livrar do problema.

xcode-select --install

Sim, esse era o problema. Muito obrigado!
Eduard Ghinea 9/11/19

E então este sudo gem install -n /usr/local/bin cocoapods thumbsup
hyd00 06/04

8

Encontrei a solução aqui .

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

8

Este post me ajudou. Muito obrigado.

No Linux (Ubuntu 12.10) eu precisava executar

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

antes que eu pudesse correr com sucesso

sudo gem install jekyll

4

Se você possui o gem instalado e o ruby ​​e não consegue instalar os trilhos, instale o ruby ​​dev lib.

sudo apt-get install ruby-dev

Funciona para mim. Eu tentei a solução diferente.


Eu tenho o Ubuntu 16.04LTS. Eu acho que o mesmo será para outra versão 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 aqueles que ainda estão enfrentando problemas, como eu (estou usando o Ubuntu 16.04), tive que colocar os seguintes comandos para obter algumas gemas como bcrypt, pg e outras instaladas. Eles são todos semelhantes aos acima, exceto um.

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

Isso me permitiu instalar gemas como, PG, bcrypt e recaptcha.


1

Minha solução inicial era resolver os erros anteriores, instalando ruby-devel, patcherubygems .

Meu problema foi um pouco diferente, pois o bcrypt 3.1.11 ainda apresentava problemas ao compilar e instalar no Fedora 23. Eu precisava de pacotes adicionais. Portanto, depois de garantir que eu tinha o acima instalado, eu ainda estava tendo problemas:

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

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

A partir daqui, tive que fazer o seguinte:

  • Eu assegurei que não estava faltando nenhuma ferramenta de compilador C sudo dnf group install "C Development Tools and Libraries"

  • Então corri sudo dnf install redhat-rpm-configpara resolver o problema do gcc listado acima.

Você pode encontrar uma redação aqui no Fedore Project . Você também pode encontrar respostas para outras necessidades.



1

Você precisa dos seguintes pacotes instalados:

  • ruby-dev

  • gcc

  • libffi-dev

  • faço

Aqui está o comando para a distribuição debian:

 sudo apt install gcc ruby-dev rubygems libgmp-dev libgmp3-dev make 


0

É necessário instalar o redhat-rpm-config no. Eu acho que resolve o seu problema!



0

Você pode ter estragado o RVM.

Tente fazer:

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

-1

Apenas para adicionar o caminho para o arquivo ruby.h no meu PATH,
por exemplo:

exportar PATH = $ PATH: / usr / src / ruby-xxxxxx

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.