Für den Kontext auf einem Remote-Server mit einer Firewall. Ich richte meine Umgebung über einen Proxy ein. Ich habe ruby 1.8.7
. Wenn ich versuche, gem zu installieren ..
sudo gem install --http-proxy <host address>:<port> json
Ich erhalte folgende Fehlermeldung:
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 can't find header files for ruby at /usr/lib/ruby/ruby.h
Gem files will remain installed in /usr/lib64/ruby/gems/1.8/gems/json-1.8.1 for inspection.
Results logged to /usr/lib64/ruby/gems/1.8/gems/json-1.8.1/ext/json/ext/generator/gem_make.out
Da ich mir nicht sicher war, wo das Problem liegt, habe ich gegoogelt und diese gefunden
Gem-Installation: Fehler beim Erstellen der nativen Gem-Erweiterung (Header-Dateien können nicht gefunden werden) - Die Anweisungen hier scheinen spezifisch für den zu installierenden Gem zu sein.
So installieren Sie json gem - Fehler beim Erstellen der nativen Erweiterung von gem Dies scheint ein etwas anderer Fehler zu sein.
Irgendwelche Hinweise? Vielen Dank!
/usr/lib/ruby/ruby.h
Datei. Wenn diese vorhanden ist, zeigen Sie uns die Fehlermeldung von angem_make.out
.Antworten:
Modernes Update, wie von mimoralea angegeben :
oder generisch:
Der erste Link, den Sie gepostet haben, ist genau Ihr Fall: Es ist keine Ruby-Entwicklungsumgebung installiert. Development Env wird benötigt, um Ruby-Erweiterungen zu kompilieren, die meistens in geschrieben sind
C
. Proxy hat nichts mit dem Problem zu tun: Alles wird gut heruntergeladen, nur die Kompilierung schlägt fehl.Ich würde Ihnen empfehlen, das Paket
ruby-dev
(ruby-devel
für RPM-basierte Distributionen) auf Ihrem Zielcomputer zu installieren .gcc
Paket kann auch benötigt werden.Versuchen:
Oder für Redhat Distribution:
Oder für [open] SuSE:
quelle
ruby-dev
seinerruby-devel
. Hier habe ich gefunden, was ich genau brauchte - digitalocean.com/community/articles/…sudo zypper install ruby-devel
für openSUSEruby2.2-dev
(oder welche Version Sie installiert haben).Für Xcode 11 unter macOS 10.14 kann dies auch nach der Installation von Xcode und der Installation von Befehlszeilentools und dem Akzeptieren der Lizenz mit geschehen
Das Problem ist, dass Xcode 11 das macOS 10.15 SDK liefert, das Header für ruby2.6 enthält, nicht jedoch für ruby2.3 von macOS 10.14. Sie können überprüfen, ob dies Ihr Problem ist, indem Sie ausführen
Unter MacOS 10.14 mit Xcode 11 wird der nicht vorhandene Pfad gedruckt
Xcode 11 installiert jedoch ein macOS 10.14 SDK
/Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk
. Es ist nicht erforderlich, die Systemverzeichnisse durch Installieren der alten Header-Dateien zu verschmutzen, wie in anderen Antworten vorgeschlagen. Wenn Sie stattdessen dieses SDK auswählen, werden die entsprechenden ruby2.3-Header gefunden:Dies sollte jetzt korrekt gedruckt werden
Gleichfalls,
gem install
sollte funktionieren, während dieses SDK ausgewählt ist.Verwenden Sie, um zum aktuellen Xcode SDK zurückzukehren
quelle
Für den Fall, dass Sie Ruby 2.0 oder 2.2 (danke @ patrick-davey) oder 2.3 (danke @ juanitofatas) verwenden.
Und das Muster bekommen Sie hier ...
quelle
sudo apt-get install ruby2.2-dev
E: Unable to locate package ruby2.2-dev
E: Couldn't find any package by regex 'ruby2.2-dev'
sudo apt-add-repository -y ppa:brightbox/ruby-ng && sudo apt-get update && sudo apt-get install -y ruby2.2-dev
Ich bin auch auf dieses Problem gestoßen, weil ich Ruby unter Ubuntu über Brightbox installiert habe und dachte, Ruby-Dev sei der Stamm von Ruby. Also habe ich nicht installiert. Die Installation von ruby2.3-dev behebt das Problem:
quelle
Für diejenigen, die dies unter Mac OS X erhalten, müssen Sie möglicherweise den folgenden Befehl ausführen, um die XCode-Befehlszeilentools zu installieren, auch wenn Sie XCode bereits installiert haben:
Außerdem müssen Sie den Bedingungen von XCode zustimmen, indem Sie den folgenden Befehl ausführen:
quelle
su - $USER -c 'xcode-select --install'
Ich hatte ein ähnliches Problem mit Cygwin, um den folgenden Befehl auszuführen:
Ich habe es gelöst, indem ich die folgenden Cygwin-Pakete installiert habe:
quelle
/cygdrive/z/.gem/ruby/extensions/x86-cygwin/json-1.8.3/json/ext/parser.so: [BUG] Segmentation fault at 0x0001b8
rm -rf ~/.gem/
und erneutes Ausgeben des Befehls.ruby-dev
auf Himbeer piDie am häufigsten gewählte Lösung funktionierte auf meinem Computer nicht (Linux Mint 18.04). Nach einem sorgfältigen Blick stellte ich fest, dass g ++ fehlte. Gelöst mit
quelle
make
undg++
mein Problem auch unter Ubuntu 18.04 beheben!falls Sie SUSE verwenden
quelle
sudo zypper in ruby-devel
.Xcode 11 / macOS Catalina
Unter Xcode 11 / macOS Catalina befinden sich die Header-Dateien nicht mehr am alten und am alten Speicherort
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Datei ist nicht mehr verfügbar.Stattdessen werden die Header jetzt im
/usr/include
Verzeichnis des aktuellen SDK-Pfads installiert :Der größte Teil dieses Verzeichnisses kann mithilfe der Ausgabe von gefunden werden
xcrun --show-sdk-path
. Wenn Sie diesen Pfad zurCPATH
Umgebungsvariablen hinzufügen , können Build-Skripte (einschließlich der über aufgerufenenbundle
) ihn im Allgemeinen finden.Ich habe dies behoben, indem ich meine
CPATH
in meiner.zshrc
Datei festgelegt habe:Nach dem Öffnen einer neuen Shell (oder dem Ausführen
source .zshrc
) erhalte ich nicht mehr die Fehlermeldung mkmf.rb kann unter /usr/lib/ruby/ruby.h keine Header-Dateien für Ruby finden und die Rubygems werden ordnungsgemäß installiert.quelle
Mojave 10.14.6
undXCode 11.3.1
. Vielen Dank, ich habe 1 TagIn Fedora 21 und höher öffnen Sie einfach ein Terminal und installieren die Ruby Development-Dateien als Root.
quelle
Möglicherweise müssen Sie gcc nach der Installation von ruby-devel installieren
quelle
Xcode -> Einstellungen -> Standorte
Ändern Sie die Befehlszeilentools in Xcode 11.2.1
quelle
Unter Mac 10.14 scheinen die Header-Dateien nicht an der richtigen Stelle installiert zu sein. Anstatt wie bei den anderen Fixes die Pfade zu ändern, konnte ich Folgendes ausführen:
Befolgen Sie die Anweisungen und es hat dieses Problem für mich gelöst.
quelle
Sie müssen den gesamten Rubin und nicht nur das Mindestpaket installieren. Der richtige Befehl lautet:
Der folgende Befehl installiert auch keinen vollständigen Ruby:
quelle
Für Ubuntu 18 nach Überprüfung der während der Installation erwähnten Protokolldatei
Ergebnisse protokolliert unter /var/canvas/vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0/nio4r-2.5.2/gem_make.out
mit
Mir ist aufgefallen, dass
make
das nicht gefunden wird. Also installiert machen durchalles hat funktioniert.
quelle
versuchen Sie es für Ubuntu 16.04
quelle