Impossibile installare gem - Impossibile creare l'estensione nativa gem - Impossibile caricare tale file - mkmf (LoadError)


172

Ruby 1.9.3

La parte di Gemfile

#...............
gem "pony"
gem "bcrypt-ruby", :require => "bcrypt"
gem "nokogiri" 
#..................

Quando sto cercando di installare gemme, ricevo un errore

alex@ubuntu:~/$ bundle
Fetching gem metadata from http://rubygems.org/.........
Fetching gem metadata from http://rubygems.org/..
Enter your password to install the bundled RubyGems to your system: 
#####............................................................
Installing bcrypt-ruby (3.0.1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb 
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from extconf.rb:36:in `<main>'


Gem files will remain installed in /home/alex/.bundler/tmp/5526/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /home/alex/.bundler/tmp/5526/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out
An error occurred while installing bcrypt-ruby (3.0.1), and Bundler cannot continue.
Make sure that `gem install bcrypt-ruby -v '3.0.1'` succeeds before bundling.

Allora lo sto facendo

sudo gem install bcrypt-ruby -v '3.0.1'
Building native extensions.  This could take a while...
ERROR:  Error installing bcrypt-ruby:
        ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from extconf.rb:36:in `<main>'


Gem files will remain installed in /var/lib/gems/1.9.1/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out

e anche ottenere un errore.

Cosa mi sono perso?


Risposte:


428

Ci sono domande simili:

Di solito, la soluzione è:

sudo apt-get install ruby-dev

Oppure, se non funziona, a seconda della versione di Ruby , esegui qualcosa del tipo:

sudo apt-get install ruby1.9.1-dev

Dovrebbe risolvere il tuo problema.


Continua a non funzionare? Prova quanto segue dopo aver installato ruby-dev:

sudo apt-get install make


Ma ho solo 1.9.3 rubini.
Alexandre,

5
ruby 1.9.3 è un alias di ruby ​​1.9.1

6
Dopo l'installazione ruby1.9.1-devho dovuto anche sudo apt-get install make. Grazie!
wasatchwizard

6
Se hai installato ruby ​​con il comando sudo apt-get install ruby(senza specificare la versione), non devi preoccuparti troppo della tua versione se hai appena installatosudo apt-get install ruby-dev
kellins

7
Ho scoperto che anche su Ubuntu 16.04 è necessariosudo apt-get install gcc make
Treur il

13

Per WSL (sottosistema Windows per Linux) è necessario il build-essentialpacchetto di installazione :

sudo apt install build-essential

1
Risolto per me dopo che nessuno degli altri suggerimenti sembrava farlo. La mia configurazione: Win10 Pro + WSL con Ubuntu 18.04 + Ruby 2.5. Grazie!
cjs1978,

1
Stessa cosa per una VM Hyper-V Ubuntu Server.
Jorge Yanes Diez,

1
Ha funzionato per me su Ubuntu in Docker
Miguel Mota il

Questo ha funzionato per me su un'installazione regolare di Ubuntu 18.04 LTS durante il tentativo di installare Typhoeus. Ci sono voluti anni per arrivarci, grazie!
Rinnovato il

8

Ho avuto lo stesso problema nel tentativo di installare jquery-rails. La correzione era

sudo apt-get install zlibc zlib1g zlib1g-dev

1
Solo l'installazione zlib1g-devti darà ciò di cui hai bisogno qui, o almeno ha fatto per me.
scade il

4

Ho scoperto che dovevo installare un'altra versione di ruby. Quindi eseguendo il comando

$ sudo apt-get install ruby1.9.1-dev

e quindi tenta di installare l'estensione

Se si verificano problemi in cui viene indicato che non si dispone di g ++, è possibile eseguire il comando seguente per installarlo

$ sudo apt-get install g++

4

Ho appena finito un inseguimento di oca selvatica di 2 ore cercando di risolverlo. Nessuna delle risposte pubblicate ha funzionato per me. Sono su un Mac (Mojave versione 10.14.6, Xcode versione 11.3).

Si scopre che mancavano le intestazioni dei file ruby, quindi ho dovuto correre open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

All'inizio non ha funzionato per me perché la versione di CommandLineTools che avevo installato non aveva la cartella "Pacchetti". Quindi ho disinstallato e reinstallato in questo modo:

rm -rf /Library/Developer/CommandLineTools

xcode-select --install

Quindi ho eseguito nuovamente il comando precedente:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

Dopo l'installazione l'errore è stato corretto!


Questo ha funzionato per me. Sono su macOS 10.14.6 (18G1012). Xcode 11.3.
palmi

Grazie. La tua soluzione ha funzionato per me durante l'installazione di "sudo gem install cocoapods" per lo sviluppo di flutter.
Venkataraman K

3

Nel caso qualcuno in futuro avesse questo problema, sto usando un Mac e dovevo solo installare gli Strumenti da riga di comando usando 'xcode-select --install'


1
Questo ha funzionato per me. Nel mio caso, mi stavo grattando la testa perché la mia build funzionava bene fino a quando non sono passato a El Capitan.
bruce1337,

2
  1. Assicurarsi che ruby-devsia installato
  2. Assicurarsi che makesia installato
  3. Se l'errore persiste, cercare i pacchetti suggeriti. Se stai cercando di installare qualcosa di simile, gem install pgdovrai anche installare lib libpq-dev( sudo apt-get install libpq-dev).

1

Aiuta anche a garantire l'installazione di libmysqlclient-dev (Ubuntu 14.04)


1

Questo ha funzionato per me. bundle config --global build.snappy --with-opt-dir="$(brew --prefix snappy)"


0

In Mac, per me funziona:

CONFIGURE_OPTS="--enable-shared" rbenv install 2.2.2

0

Dopo qualche ricerca di una soluzione, si scopre che è necessario il pacchetto -dev, non solo ruby1.8. Quindi, se hai ruby1.9.1

sudo apt-get install ruby1.9.1-dev

o per installare la versione ruby ​​generica, usare (come da commento @lamplightdev):

sudo apt-get install ruby-dev

dovrebbe risolverlo.

Prova a localizzare mkmf per vedere se il file è effettivamente lì.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.