516 Stimmen

Fehler beim Installieren von JSON-Gem 'mkmf.rb kann Kopfzeilen für Ruby nicht finden'

Zum Kontext: Es handelt sich um einen Remote-Server, der eine Firewall hat. Ich richte meine Umgebung über einen Proxy ein. Ich habe ruby 1.8.7. Wenn ich versuche, gem install...

sudo gem install --http-proxy : json

erhalte ich folgenden Fehler:

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

/usr/bin/ruby extconf.rb
mkmf.rb kann die Headerdateien für Ruby unter /usr/lib/ruby/ruby.h nicht finden.

Gem-Dateien bleiben in /usr/lib64/ruby/gems/1.8/gems/json-1.8.1 zur Überprüfung installiert.
Ergebnisse sind in /usr/lib64/ruby/gems/1.8/gems/json-1.8.1/ext/json/ext/generator/gem_make.out protokolliert

Weil ich unsicher war, was das Problem ist, habe ich gegoogelt und folgendes gefunden

Irgendwelche Hinweise? Vielen Dank!

14voto

Kinifwyne Punkte 190

Ich hatte ein ähnliches Problem bei der Verwendung von Cygwin, um den folgenden Befehl auszuführen:

$ gem install rerun

Ich habe es gelöst, indem ich die folgenden Cygwin-Pakete installiert habe:

  • ruby-devel
  • libffi-devel
  • gcc-core
  • gcc-g++
  • make
  • automake1.15

13voto

Manuel Fedele Punkte 1232

Die am meisten gewählte Lösung hat auf meinem Computer (Linux Mint 18.04) nicht funktioniert. Nach genauerem Hinsehen stellte ich fest, dass g++ fehlte.

sudo apt-get install g++

8voto

Prokur Punkte 81

Falls Sie SUSE verwenden

sudo yast2 -i ruby-devel

8voto

Aaron Brager Punkte 63973

Xcode 11 / macOS Catalina

Unter Xcode 11 / macOS Catalina befinden sich die Headerdateien nicht mehr am alten Ort und die alte /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg Datei ist nicht mehr verfügbar.

Stattdessen sind die Headerdateien jetzt im Verzeichnis /usr/include des aktuellen SDK-Pfads installiert:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include

Dieses Verzeichnis kann größtenteils durch die Ausgabe von xcrun --show-sdk-path gefunden werden. Und wenn Sie diesen Pfad der Umgebungsvariable CPATH hinzufügen, können Build-Skripte (einschließlich solcher, die über bundle aufgerufen werden) im Allgemeinen darauf zugreifen.

Ich habe dies gelöst, indem ich mein CPATH in meiner .zshrc Datei festgelegt habe:

export CPATH="$(xcrun --show-sdk-path)/usr/include"

Nachdem ich eine neue Shell geöffnet habe (oder source .zshrc ausführe), erhalte ich nicht mehr die Fehlermeldung mkmf.rb kann die Headerdateien für Ruby unter /usr/lib/ruby/ruby.h nicht finden und die Rubygems installieren sich ordnungsgemäß.

Hinweis zum Bauen auf Nicht-macOS-Plattformen

Wenn Sie auf Nicht-macOS-Plattformen wie iOS/tvOS/watchOS bauen, wird durch diese Änderung versucht, das macOS SDK in diese Plattformen zu integrieren, was zu Build-Fehlern führen kann. Um das Problem zu lösen, setzen Sie entweder die Umgebungsvariable CPATH nicht beim Anmelden oder setzen Sie sie temporär auf leer, wenn Sie xcodebuild wie folgt ausführen:

CPATH="" xcodebuild --some-args

5voto

emmojo Punkte 531

In Fedora 21 und höher öffnen Sie einfach ein Terminal und installieren die Ruby-Entwicklungsdateien als Root.

dnf install ruby-devel

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X