`require ': nenhum arquivo para carregar - mkmf (LoadError)

563

Eu estava tentando instalar trilhos no Ubuntu Natty Narwhal 11.04, usando o ruby1.9.1.

Eu instalei o ruby ​​usando o apt-get install ruby1.9.1-fullque contém o pacote dev. Eu pesquisei no erro e todos sugeriram que eu instale o 1.9.1-dev que eu já tenho.

Building native extensions.  This could take a while...
ERROR:  Error installing rails:
    ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.8 extconf.rb
extconf.rb:36:in `require': no such file to load -- mkmf (LoadError)
    from extconf.rb:36


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out
Omar S.
fonte
1
Eu tive um erro paralelo ao tentar instalar o watir-webdriver. Ele também foi corrigido com a instalação ruby1.0.1-dev
kaleidic

Respostas:

979

Após alguma pesquisa por uma solução, o -devpacote é necessário, não apenas ruby1.8. Então, se você está ruby1.9.1fazendo

sudo apt-get install ruby1.9.1-dev

ou para instalar a versão genérica do ruby, use (como no comentário @lamplightdev):

sudo apt-get install ruby-dev

deve consertá-lo.

Tente locate mkmfver se o arquivo está realmente lá.

Emil Ivanov
fonte
220
o seguinte irá instalar o pacote dev combinado com a sua versão rubi atualmente instalado: sudo apt-get install ruby-dev
lamplightdev
sim funcionou para mim. execute o ruby ​​-v para encontrar a versão se você quiser instalar apenas a versão atual do ruby.
Dan Bradbury
3
@lamplightdev Não funcionou para mim, a versão ruby ​​era 1.9.3 e estava instalando 1.8 Se eu tentasse instalar o ruby-dev
Karthik T
1
Eu instalei ruby-all-dev, provavelmente funcionará para todas as versões.
jcubic
Isso também é necessário para o aws-sdk agora que o SOAP foi descontinuado para a AWS. Uma preocupação se as partes interessadas se opuserem a qualquer coisa - dev em uma construção de produção. (Os SDKs também não os emocionam).
Mckenzm
185

Esta é a resposta que funcionou para mim. Estava nos comentários acima, mas merece seu devido lugar como resposta para o ubuntu 12.04 ruby ​​1.8.7

sudo apt-get install ruby-dev
# if above doesnt work make sure you have build essential
sudo apt-get install build-essential
jmontross
fonte
Também é importante notar que, se você quiser usar o centro de software do ubuntu, há um complemento para o ruby-dev, você pode selecionar os 'Arquivos de cabeçalho para compilar módulos de extensão'.
RightHandedMonkey
Eu usei sudo apt-get install ruby1.9.1-devcom o ruby ​​1.9.3 antes de ver o comentário ou esta resposta, e isso me permitiu construir a extensão de trilhos. Não tenho certeza se versões incompatíveis como essa me causarão dor de cabeça mais tarde, mas deve-se notar que os trilhos foram instalados corretamente usando uma ligeira alteração da resposta oficialmente aceita.
DWils
E se você tiver RVM? Então você já não tem a versão ruby ​​de que precisa?
Thesecretmaster 28/05
37

Eu também precisava do build-essential instalado:

sudo apt-get install build-essential
James Dunmore
fonte
Este foi o ticket aqui .. Eu imagino que eu também precisei instalar o ruby-dev, mas não funcionou até que eu instalei o build-essential também. um milhão de agradecimentos
unc0nnected
30

O problema ainda é recursivo no Ubuntu 13/04 / 13.10 / 14.04

e

sudo apt-get install ruby1.9.1-dev

funcionou para mim tudo bem. Então, se você estiver usando o Ubuntu 13.04 / 13.10 / 14.04, será muito útil usá-lo.

Isso funciona mesmo se a versão ruby ​​for 1.9.3. Isso ocorre porque não há ruby1.9.3-dev disponível no Repositório ...

kenju254
fonte
1
Sim, este também funcionou para mim no ruby1.9.3. Não havia um pacote no repositório do ubuntu para ruby1.9.3-dev.
DWils
não mais ... trabalhou depois de instalar rvm de rvm.io com --ruby - e provavelmente melhor para apt-get remove rubi antes
dagelf
18

Você tentou:

sudo apt-get install ruby1.8-dev
Matteo Alessani
fonte
3
Estou usando o 1.9.1, por que devo instalar o ruby1.8-dev?
Omar S.
Na verdade, é tão estranho que eu instalei o 1.9.1, mas ele lê 1.8, quando eu executo o ruby ​​-v, recebo: ruby ​​1.8.7 (16-08-2010, nível de patch 302) [x86_64-linux]
Omar S.
2
você tem rubi 1,8 conjunto como rubi padrão no seu sistema
Matteo Alessani
10

Eu recebi o erro semelhante ao instalar o pacote

sudo apt-get install ruby-dev

Funciona muito bem para mim e resolve o problema Mint 16 ruby1.9.3

Sergey Nikolaev
fonte
0

Você pode usar o RVM (gerenciador de versão Ruby), que ajuda no gerenciamento de todas as versões do ruby ​​na sua máquina, o que é muito útil para o seu desenvolvimento (ao migrar para uma versão instável para uma versão estável)

ou para Linux (ubuntu), vá para sudo apt-get install ruby1.8-dev

então sudo gem install railspara verificar isso rails -v ele irá mostrar a versão on rails

depois disso, você pode instalar pacotes configuráveis ​​(gemas necessárias para o desenvolvimento)

Mohit Verma
fonte
Você ainda pode usar o RVM no linux. Estou fazendo isso (mas ainda tem a questão deste erro MKMF ao instalar trilhos)
thesecretmaster