196 votes

Impossible d'installer une gemme - Failed to build gem native extension - cannot load such file -- mkmf (LoadError)

Ruby 1.9.3

La partie du Gemfile

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

Lorsque j'essaie 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 j'obtiens également une erreur.

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

1 votes

0 votes

Pour macOS, cela peut également être utile : stackoverflow.com/questions/20939568/

455voto

MrYoshiji Points 22300

Il y a des questions similaires :

En général, la solution est la suivante :

sudo apt-get install ruby-dev

Ou, si cela ne fonctionne pas, en fonction de votre version de ruby exécutez quelque chose comme :

sudo apt-get install ruby1.9.1-dev

Cela devrait régler votre problème.


Cela ne fonctionne toujours pas ? Essayez ce qui suit après avoir installé ruby-dev :

sudo apt-get install make

0 votes

Mais je n'ai que la version 1.9.3 de ruby.

5 votes

Ruby 1.9.3 est un alias de ruby 1.9.1

6 votes

Après avoir installé ruby1.9.1-dev Je devais aussi sudo apt-get install make . Merci !

20voto

Dmitry S. Points 171

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

sudo apt install build-essential

11voto

Jerome Points 27

Je viens de terminer une chasse à l'oie sauvage de deux heures pour essayer de résoudre ce problème. Aucune des réponses postées n'a fonctionné pour moi. Je suis sur un Mac (Mojave Version 10.14.6, Xcode Version 11.3).

Il s'avère que les en-têtes du fichier ruby manquaient, donc j'ai dû exécuter open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

Cela n'a pas fonctionné pour moi au début parce que la version de CommandLineTools que j'avais installée n'avait pas le dossier "Packages". J'ai donc désinstallé et réinstallé comme ceci :

rm -rf /Library/Developer/CommandLineTools

xcode-select --install

Puis j'ai relancé la commande précédente :

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

Après l'installation, l'erreur a été corrigée !

9voto

B2Pi Points 93

J'ai eu le même problème en essayant d'installer jquery-rails. La solution était

sudo apt-get install zlibc zlib1g zlib1g-dev

6voto

NateW Points 755

Au cas où quelqu'un aurait ce problème à l'avenir, j'utilise un Mac et j'ai dû installer les outils de ligne de commande en utilisant 'xcode-select --install'.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X