`require ': Keine solche Datei zum Laden - mkmf (LoadError)


563

Ich habe versucht, Rails unter Ubuntu Natty Narwhal 11.04 mit ruby1.9.1 zu installieren.

Ich habe Ruby installiert, mit apt-get install ruby1.9.1-fulldem das Entwicklerpaket enthalten ist. Ich habe den Fehler gegoogelt und alle haben vorgeschlagen, den 1.9.1-dev zu installieren, den ich bereits habe.

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

        /usr/bin/ruby1.8 extconf.rb
extconf.rb:36:in `require': no such file to load -- mkmf (LoadError)
    from extconf.rb:36


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out

1
Ich hatte einen parallelen Fehler beim Versuch, watir-webdriver zu installieren. Es wurde auch durch die Installation von ruby1.0.1-dev
kaleidic

Antworten:


979

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

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 locate mkmfzu sehen, ob die Datei tatsächlich vorhanden ist.


220
Im Folgenden wird das Entwicklungspaket installiert, das mit Ihrer aktuell installierten Ruby-Version übereinstimmt: sudo apt-get install ruby-dev
lamplightdev

Ja, ich habe für mich gearbeitet. Führen Sie ruby ​​-v aus, um die Version zu finden, wenn Sie nur die aktuelle Ruby-Version installieren möchten.
Dan Bradbury

3
@lamplightdev Hat bei mir nicht funktioniert, Ruby-Version war 1.9.3 und es wurde 1.8 installiert. Wenn ich versuchte, Ruby-Dev zu installieren
Karthik T

1
Ich habe installiert ruby-all-dev, es wird wahrscheinlich für alle Versionen funktionieren.
Jcubic

Dies ist auch für aws-sdk erforderlich, da SOAP für AWS veraltet ist. Eine Sorge, wenn Stakeholder Einwände gegen irgendetwas erheben - Entwicklung eines Produktionsaufbaus. (SDKs begeistern sie auch nicht).
McKenzm

185

Dies ist die Antwort, die für mich funktioniert hat. War in den Kommentaren oben, verdient aber seinen rechtmäßigen Platz als Antwort für Ubuntu 12.04 Ruby 1.8.7

sudo apt-get install ruby-dev
# if above doesnt work make sure you have build essential
sudo apt-get install build-essential

Es ist auch erwähnenswert, dass, wenn Sie das Ubuntu-Softwarecenter verwenden möchten, es ein Add-On für Ruby-Dev gibt, das Sie für die 'Header-Dateien zum Kompilieren von Erweiterungsmodulen' auswählen können.
RightHandedMonkey

Ich habe sudo apt-get install ruby1.9.1-devmit Ruby 1.9.3 verwendet, bevor ich den Kommentar oder diese Antwort gesehen habe, und das hat mir erlaubt, die Rails-Erweiterung zu erstellen. Ich bin mir nicht sicher, ob solche nicht übereinstimmenden Versionen mir später Kopfschmerzen bereiten werden, aber es sollte beachtet werden, dass die Schienen korrekt installiert wurden, indem eine geringfügige Änderung der offiziell akzeptierten Antwort vorgenommen wurde.
DWils

Was ist, wenn Sie RVM haben? Dann haben Sie nicht schon die Ruby-Version, die Sie brauchen?
Geheimmeister

37

Ich brauchte auch Build-Essential installiert:

sudo apt-get install build-essential

Dies war das Ticket hier. Ich kann mir vorstellen, dass ich auch Ruby-Dev installieren musste, aber es hat nicht funktioniert, bis ich auch Build-Essential installiert habe. eine Million Dank
unverbunden

30

Das Problem ist unter Ubuntu 13/04 / 13.10 / 14.04 immer noch rekursiv

und

sudo apt-get install ruby1.9.1-dev

hat für mich gut geklappt. Wenn Sie also Ubuntu 13.04 / 13.10 / 14.04 verwenden, ist dies sehr nützlich.

Dies funktioniert auch, wenn die Ruby-Version 1.9.3 ist. Dies liegt daran, dass im Repository kein ruby1.9.3-dev verfügbar ist ...


1
Ja, dieser hat auch für mich bei ruby1.9.3 funktioniert. Es gab kein Paket im Ubuntu-Repository für ruby1.9.3-dev.
DWils

nicht mehr ... funktionierte nach der Installation von rvm von rvm.io mit --ruby - und wahrscheinlich am besten, um Ruby vorher zu entfernen
dagelf

18

Hast du es versucht:

sudo apt-get install ruby1.8-dev

3
Ich verwende 1.9.1. Warum soll ich ruby1.8-dev installieren?
Omar S.

Das ist in der Tat so seltsam, dass ich 1.9.1 installiert habe, aber es lautet 1.8, wenn ich ruby ​​-v ausführe, bekomme ich: ruby ​​1.8.7 (16.08.2010 Patchlevel 302) [x86_64-linux]
Omar S.

2
Sie haben Ruby 1.8 als Standard-Ruby auf Ihrem System eingestellt
Matteo Alessani

10

Ich habe den ähnlichen Fehler bei der Installation des Bundles erhalten

sudo apt-get install ruby-dev

Funktioniert super für mich und löst das Problem Mint 16 ruby1.9.3




0

Sie können RVM (Ruby Version Manager) verwenden, mit dem Sie alle Ruby-Versionen auf Ihrem Computer verwalten können. Dies ist sehr hilfreich für Ihre Entwicklung (bei der Migration auf eine instabile Version auf eine stabile Version).

oder für Linux (Ubuntu) gehen für sudo apt-get install ruby1.8-dev

dann sudo gem install railszu überprüfen , es zu tun rails -vwird es Version auf Schienen zeigen

Danach können Sie Bundles installieren (erforderliche Edelsteine ​​für die Entwicklung).


Sie können RVM weiterhin unter Linux verwenden. Ich mache das (habe aber immer noch das Problem dieses mkmf-Fehlers bei der Installation von Schienen)
Geheimmeister
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.