web-dev-qa-db-fra.com

Impossible d'installer gem - Impossible de créer l'extension native de gem - impossible de charger un tel fichier - mkmf (LoadError)

Ruby 1.9.3

La partie de Gemfile

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

Quand j'essaye d'installer des gems, j'obtiens une erreur

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.

Alors je fais ça

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

et obtenir une erreur aussi.

Qu'est-ce que j'ai raté?

151
Alexandre

Il y a des questions similaires: 

Habituellement, la solution est la suivante:

Sudo apt-get installez Ruby-dev

Ou, si cela ne fonctionne pas, selon votre version de Ruby, exécutez quelque chose comme:

Sudo apt-get installer Ruby1.9.1-dev

Devrait résoudre votre problème.


Ne fonctionne toujours pas? Essayez ce qui suit après avoir installé Ruby-dev:

Sudo apt-get install marque

393
MrYoshiji

J'ai eu le même problème en essayant d'installer jquery-Rails. Le correctif était 

Sudo apt-get install zlibc zlib1g zlib1g-dev
4
B2Pi

J'ai trouvé que je devais installer une autre version de Ruby. Donc exécuter la commande

$ Sudo apt-get install Ruby1.9.1-dev

puis essayez d'installer l'extension

Si vous rencontrez des problèmes où il vous dit que vous n'avez pas g ++, vous pouvez exécuter la commande suivante pour l'installer.

$ Sudo apt-get install g++
4
hmjha
  1. Assurez-vous que Ruby-dev est installé
  2. Assurez-vous que make est installé
  3. Si l'erreur persiste, recherchez les packages suggérés. Si vous essayez d’installer quelque chose comme gem install pg, vous devrez également installer la bibliothèque lib libpq-dev (Sudo apt-get install libpq-dev).
2
hazmat

Au cas où quelqu'un aurait ce problème à l'avenir, j'utilise un Mac et je dois installer les outils de ligne de commande à l'aide de 'xcode-select --install' 

2
NateW

Cela aide également à s'assurer que libmysqlclient-dev est installé (Ubuntu 14.04)

1
KLaw

Sur Mac, cela fonctionne pour moi:

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

Après une recherche de solution, il s'avère que le paquetage -dev est nécessaire, pas seulement Ruby1.8. Donc, si vous avez Ruby1.9.1 faire

Sudo apt-get install Ruby1.9.1-dev

ou pour installer la version générique de Ruby, utilisez (selon le commentaire @lamplightdev):

Sudo apt-get install Ruby-dev

devrait le réparer.

Essayez de localiser mkmf pour voir si le fichier est réellement là.

0
Rahi.Shah

Pour WSL (Windows Subsystem for Linux), vous devez installer le package build-essential:

Sudo apt install build-essential
0
Dmitry S.