Gem kann nicht installiert werden - Gem-native Erweiterung konnte nicht erstellt werden - solche Datei kann nicht geladen werden - mkmf (LoadError)

172

Ruby 1.9.3

Der Teil von Gemfile

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

Wenn ich versuche, Edelsteine ​​zu installieren, wird eine Fehlermeldung angezeigt

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.

Dann mache ich das

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

und auch einen Fehler bekommen.

Was habe ich verpasst?

Alexandre
quelle

Antworten:

428

Es gibt ähnliche Fragen:

Normalerweise lautet die Lösung:

sudo apt-get install ruby-dev

Wenn dies je nach Ruby-Version nicht funktioniert, führen Sie Folgendes aus :

sudo apt-get install ruby1.9.1-dev

Sollte Ihr Problem beheben.


Funktioniert immer noch nicht? Versuchen Sie nach der Installation von ruby-dev Folgendes:

sudo apt-get install make

MrYoshiji
quelle
Aber ich habe nur 1.9.3 Rubin.
Alexandre
5
Ruby 1.9.3 ist ein Alias ​​von Ruby 1.9.1
6
Nach der Installation musste ruby1.9.1-devich auch sudo apt-get install make. Danke dir!
Wasatchwizard
6
Wenn Sie Ihren Ruby mit Befehl installiert haben sudo apt-get install ruby(ohne die Version anzugeben), müssen Sie sich nicht zu viele Sorgen um Ihre Version machen, wenn Sie nur installierensudo apt-get install ruby-dev
Kellins
7
Ich fand, dass Sie auf Ubuntu 16.04 auch brauchensudo apt-get install gcc make
Treur
13

Für WSL (Windows Subsystem for Linux) benötigen Sie das Installationspaket build-essential:

sudo apt install build-essential
Dmitry S.
quelle
1
Hat es für mich gelöst, nachdem keiner der anderen Vorschläge es zu tun schien. Mein Setup: Win10 Pro + WSL mit Ubuntu 18.04 + Ruby 2.5. Vielen Dank!
cjs1978
1
Gleiches gilt für eine Ubuntu Server Hyper-V-VM.
Jorge Yanes Diez
1
Arbeitete für mich auf Ubuntu in Docker
Miguel Mota
Dies funktionierte bei einer regulären Installation von Ubuntu 18.04 LTS, als ich versuchte, Typhoeus zu installieren. Es hat ewig gedauert, um dorthin zu gelangen, danke!
RemakingEden
8

Ich hatte das gleiche Problem beim Versuch, JQuery-Rails zu installieren. Das Update war

sudo apt-get install zlibc zlib1g zlib1g-dev
B2Pi
quelle
1
Nur die Installation zlib1g-devgibt Ihnen das, was Sie hier brauchen, oder zumindest für mich.
Lindes
4

Ich stellte fest, dass ich eine andere Version von Ruby installieren musste. Führen Sie also den Befehl aus

$ sudo apt-get install ruby1.9.1-dev

und versuchen Sie dann, die Erweiterung zu installieren

Wenn Sie auf Probleme stoßen, bei denen Ihnen mitgeteilt wird, dass Sie nicht über G ++ verfügen, können Sie den folgenden Befehl ausführen, um es zu installieren

$ sudo apt-get install g++
hmjha
quelle
4

Ich habe gerade eine 2-stündige Verfolgungsjagd mit wilden Gänsen beendet, um dies zu lösen. Keine der geposteten Antworten hat bei mir funktioniert. Ich bin auf einem Mac (Mojave Version 10.14.6, Xcode Version 11.3).

Es stellte sich heraus, dass die Ruby-Datei-Header fehlten, also musste ich laufen open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

Das hat bei mir zunächst nicht funktioniert, da die von mir installierte Version von CommandLineTools nicht über den Ordner "Packages" verfügte. Also habe ich so deinstalliert und neu installiert:

rm -rf /Library/Developer/CommandLineTools

xcode-select --install

Dann habe ich den vorherigen Befehl erneut ausgeführt:

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

Nach der Installation wurde der Fehler behoben!

Hieronymus
quelle
Das hat bei mir funktioniert. Ich bin auf macOS 10.14.6 (18G1012). Xcode 11.3.
Palmi
Vielen Dank. Ihre Lösung hat bei der Installation von "sudo gem install cocoapods" für die Flatterentwicklung für mich funktioniert.
Venkataraman K
3

Für den Fall, dass in Zukunft jemand dieses Problem hatte, verwende ich einen Mac und musste nur die Befehlszeilentools mit 'xcode-select --install' installieren.

NateW
quelle
1
Das hat bei mir funktioniert. In meinem Fall kratzte ich mir am Kopf, weil mein Build gut funktionierte, bis ich ein Upgrade auf El Capitan durchführte.
Bruce1337
2
  1. Stellen Sie sicher, dass ruby-devinstalliert ist
  2. Stellen Sie sicher, dass makeinstalliert ist
  3. Wenn der Fehler weiterhin angezeigt wird, suchen Sie nach vorgeschlagenen Paketen. Wenn Sie versuchen, so etwas wie zu installieren, müssen gem install pgSie auch lib libpq-dev( sudo apt-get install libpq-dev) installieren .
Hazmat
quelle
1

Es hilft auch sicherzustellen, dass libmysqlclient-dev installiert ist (Ubuntu 14.04)

KLaw
quelle
1

Das hat bei mir funktioniert. bundle config --global build.snappy --with-opt-dir="$(brew --prefix snappy)"

Mohammed
quelle
0

In Mac funktioniert das für mich:

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

Nach einiger Suche nach einer Lösung stellt sich heraus, dass das Paket -dev benötigt wird, nicht nur ruby1.8. Also, wenn Sie Ruby1.9.1 tun

sudo apt-get install ruby1.9.1-dev

oder um die generische Ruby-Version zu installieren, verwenden Sie (gemäß @lamplightdev-Kommentar):

sudo apt-get install ruby-dev

sollte es beheben.

Versuchen Sie, mkmf zu finden, um festzustellen, ob die Datei tatsächlich vorhanden ist.

Rahi.Shah
quelle