Por contexto, ele em um servidor remoto que possui um firewall. Estou configurando meu ambiente por meio de um proxy. Eu tenho ruby 1.8.7
. Quando tento instalar gem ..
sudo gem install --http-proxy <host address>:<port> 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
Como não tinha certeza do problema, pesquisei no Google e encontrei essas
instalação do gem: falha ao criar a extensão nativa do gem (não é possível encontrar os arquivos de cabeçalho) - as instruções aqui parecem ser específicas para o gem que está sendo instalado.
Como instalar o json gem - Falha ao criar a extensão nativa gem Este parece ser um erro ligeiramente diferente.
Alguma dica? Obrigado!
/usr/lib/ruby/ruby.h
arquivo, se houver, mostre a mensagem de erro degem_make.out
.Respostas:
Atualização da era moderna, conforme declarado mimoralea :
ou, maneira genérica:
O primeiro link que você postou é exatamente o seu caso: não há um ambiente de desenvolvimento ruby instalado. O ambiente de desenvolvimento é necessário para compilar extensões ruby, que são escritas principalmente em
C
. O proxy não tem nada a ver com o problema: tudo é baixado corretamente, apenas a compilação falha.Eu sugiro que você instale
ruby-dev
(ruby-devel
para distribuições baseadas em rpm) no seu computador de destino.gcc
pacote também pode ser necessário.Tentar:
Ou, para a distribuição Redhat:
Ou, para o SuSE [aberto]:
fonte
ruby-dev
seuruby-devel
. Aqui é onde eu encontrei o que eu exatamente necessário - digitalocean.com/community/articles/...sudo zypper install ruby-devel
para o openSUSEruby2.2-dev
(ou qualquer versão que você instalou).Para o Xcode 11 no macOS 10.14 , isso pode acontecer mesmo após a instalação do Xcode e da instalação de ferramentas de linha de comando e da aceitação da licença com
O problema é que o Xcode 11 envia o SDK do macOS 10.15, que inclui cabeçalhos para o ruby2.6, mas não para o ruby2.3 do macOS 10.14. Você pode verificar se esse é o seu problema executando
que no macOS 10.14 com Xcode 11 imprime o caminho inexistente
No entanto, o Xcode 11 instala um macOS 10.14 SDK dentro
/Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk
. Não é necessário poluir os diretórios do sistema instalando os arquivos de cabeçalho antigos, conforme sugerido em outras respostas. Em vez disso, selecionando esse SDK, os cabeçalhos ruby2.3 apropriados serão encontrados:Agora, isso deve ser impresso corretamente
Da mesma forma,
gem install
deve funcionar enquanto esse SDK estiver selecionado.Para voltar ao Xcode SDK atual, use
fonte
Caso você esteja usando ruby 2.0 ou 2.2 (obrigado @ patrick-davey) ou 2.3 (obrigado @juanitofatas).
E você obtém o padrão aqui ...
fonte
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
Também encontrei esse problema porque instalo o Ruby no Ubuntu via brightbox e pensei que o ruby-dev fosse o tronco do ruby. Então eu não instalei. Instale o ruby2.3-dev corrigido:
fonte
Para aqueles que estão obtendo isso no Mac OS X, pode ser necessário executar o seguinte comando para instalar as ferramentas de linha de comando do XCode, mesmo se você já tiver o XCode instalado:
Além disso, você deve concordar com os termos e condições do XCode executando o seguinte comando:
fonte
su - $USER -c 'xcode-select --install'
Eu tive um problema semelhante ao usar o cygwin para executar o seguinte comando:
Eu o resolvi instalando os seguintes pacotes cygwin:
fonte
/cygdrive/z/.gem/ruby/extensions/x86-cygwin/json-1.8.3/json/ext/parser.so: [BUG] Segmentation fault at 0x0001b8
rm -rf ~/.gem/
e reemitindo o comando.ruby-dev
no raspberry piA solução mais votada não funcionou na minha máquina (linux mint 18.04). Após uma análise cuidadosa, descobri que o g ++ estava ausente. Resolvido com
fonte
make
eg++
corrigir o meu problema no Ubuntu 18.04!caso você use o SUSE
fonte
sudo zypper in ruby-devel
.Xcode 11 / macOS Catalina
No Xcode 11 / macOS Catalina, os arquivos de cabeçalho não estão mais no local antigo e o
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
arquivo antigo não está mais disponível.Em vez disso, os cabeçalhos agora estão instalados no
/usr/include
diretório do caminho atual do SDK:A maior parte desse diretório pode ser encontrada usando a saída de
xcrun --show-sdk-path
. E se você adicionar esse caminho àCPATH
variável de ambiente, os scripts de construção (incluindo os chamados viabundle
) geralmente poderão encontrá-lo.Eu resolvi isso definindo meu
CPATH
no meu.zshrc
arquivo:Após abrir um novo shell (ou em execução
source .zshrc
), não recebo mais a mensagem de erro mkmf.rb não é possível encontrar os arquivos de cabeçalho do ruby em /usr/lib/ruby/ruby.h e o rubygems é instalado corretamente.fonte
Mojave 10.14.6
eXCode 11.3.1
. Muito obrigado, demorei 1 dia para resolver isso: /No Fedora 21 ou superior, você simplesmente abre um terminal e instala os arquivos de Desenvolvimento Ruby como root.
fonte
Pode ser necessário instalar o gcc após a instalação do ruby-devel
fonte
Xcode -> Preferências -> Locais
mude as ferramentas de linha de comando para o Xcode 11.2.1
fonte
No Mac 10.14, os arquivos de cabeçalho não parecem estar instalados no local correto. Em vez de alterar os caminhos como as outras correções, eu era capaz de executar isso:
Siga as instruções e ele resolveu esse problema para mim.
fonte
Você precisa instalar o ruby inteiro e não apenas o pacote mínimo. O comando correto a ser usado é:
O comando a seguir também não instalará um ruby completo:
fonte
Para o Ubuntu 18, após verificar o arquivo de log mencionado durante a instalação
Resultados registrados em /var/canvas/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/nio4r-2.5.2/gem_make.out
com
Notei que
make
não foi encontrado. Tão instalado make bytudo funcionou.
fonte
tente para o ubuntu 16.04
fonte