Erro ao instalar o json gem ‘mkmf.rb não pode encontrar arquivos de header para ruby’

Para contexto, em um servidor remoto que tenha um firewall. Estou configurando meu ambiente por meio de um proxy. Eu tenho ruby 1.8.7 . Quando tento gem instalar ..

 sudo gem install --http-proxy : json 

Estou tendo o erro a seguir:

 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 

Desde que eu não tinha certeza qual era o problema, eu pesquisei e encontrei esses

  • gem install: Falha ao criar gem extensão nativa (não é possível encontrar arquivos de header) – as instruções aqui parecem ser específicas para a gem que está sendo instalada.

  • Como instalar o json gem – Falha ao construir gem extensão nativa Este parece ser um erro ligeiramente diferente.

Alguma dica? Obrigado!

Atualização da era moderna, como afirma a mimoralea :

Caso você esteja usando o ruby ​​2.0 ou 2.2 (obrigado @ 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 

ou, maneira genérica:

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

O primeiro link que você postou é exatamente o seu caso: não há nenhum ambiente de desenvolvimento Ruby instalado. O env de desenvolvimento é necessário para compilar as extensões ruby, que são principalmente escritas em C Proxy não tem nada a ver com o problema: tudo é baixado bem, apenas a compilation falha.

Eu sugiro que você instale o pacote ruby-dev ( ruby-devel para distribuições baseadas em rpm) em sua máquina de destino. gcc pacote do gcc pode ser necessário também.

Experimentar:

 $ sudo apt-get install ruby-dev 

Ou, para Redhat distro:

 $ sudo yum install ruby-devel 

Ou, para [aberto] SuSE:

 $ sudo zypper install ruby-devel 

Caso você esteja usando ruby ​​2.0 ou 2.2 (obrigado @ patrick-davey) ou 2.3 (obrigado @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 

E você pega o padrão aqui …

Eu também encontrei este problema porque eu instalei o Ruby no Ubuntu via brightbox , e eu pensei que o ruby-dev é o tronco do ruby. Então eu não instalei. Instale o ruby2.3-dev e conserte-o:

 sudo apt-get install ruby2.3-dev 

Eu tive um problema semelhante usando o cygwin para executar o seguinte comando:

 $ gem install rerun 

Eu resolvi isso instalando os seguintes pacotes do cygwin:

  • ruby-devel
  • libffi-devel
  • gcc-core
  • gcc-g ++
  • faço
  • automake1.15

no caso de você usar o SUSE

 sudo yast2 -i ruby-devel 

Para aqueles que estão fazendo isso no Mac OS X, você pode precisar executar o seguinte comando para instalar as ferramentas de linha de comando do XCode, mesmo que você já tenha o XCode instalado:

 sudo xcode-select --install 

Além disso, você deve concordar com os termos e condições do XCode executando o seguinte comando:

 sudo xcodebuild -license 

A solução mais votada não funcionou na minha máquina (linux mint 18.04). Depois de uma olhada cuidadosa, descobri que g + + estava faltando. Resolvido com

sudo apt-get instala g ++

No Fedora 21 e acima, você simplesmente abre um terminal e instala os arquivos do Ruby Development como root.

 dnf install ruby-devel 

Você pode precisar instalar o gcc após instalar o ruby-devel