`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
Omar S.
quelle
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.

Emil Ivanov
quelle
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
jmontross
quelle
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
James Dunmore
quelle
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 ...

kenju254
quelle
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
Matteo Alessani
quelle
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

Sergey Nikolaev
quelle
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).

Mohit Verma
quelle
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