`require ': aucun fichier à charger - mkmf (LoadError)

563

J'essayais d'installer des rails sur Ubuntu Natty Narwhal 11.04, en utilisant ruby1.9.1.

J'ai installé ruby ​​en utilisant apt-get install ruby1.9.1-fullqui contient le paquet dev. J'ai googlé l'erreur et tous ont suggéré d'installer le dev 1.9.1 que j'ai déjà.

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.
la source
1
J'ai eu une erreur parallèle en essayant d'installer watir-webdriver. Il a également été corrigé en installant ruby1.0.1-dev
kaleidic
Échec
David LeBauer

Réponses:

979

Après une recherche de solution, il s'avère que le -devpackage est nécessaire, pas seulement ruby1.8. Donc, si vous avez ruby1.9.1fait

sudo apt-get install ruby1.9.1-dev

ou pour installer la version générique ruby, utilisez (selon le commentaire @lamplightdev):

sudo apt-get install ruby-dev

devrait le réparer.

Essayez locate mkmfde voir si le fichier existe réellement.

Emil Ivanov
la source
220
ce qui suit installera le paquet dev correspondant à votre version ruby ​​actuellement installée: sudo apt-get install ruby-dev
lamplightdev
ouais a fonctionné pour moi. exécutez ruby ​​-v pour trouver la version si vous souhaitez uniquement installer la version actuelle de ruby.
Dan Bradbury
3
@lamplightdev Ne fonctionnait pas pour moi, la version ruby ​​était 1.9.3 et il installait 1.8 Si j'ai essayé d'installer ruby-dev
Karthik T
1
J'ai installé ruby-all-dev, cela fonctionnera probablement pour toutes les versions.
jcubic
Cela est également requis pour aws-sdk maintenant que SOAP est déconseillé pour AWS. Une inquiétude si les parties prenantes s'opposent à quoi que ce soit -dev sur un build de production. (Les SDK ne les excitent pas non plus).
mckenzm
185

C'est la réponse qui a fonctionné pour moi. Était dans les commentaires ci-dessus, mais mérite sa place légitime comme réponse pour 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
la source
Il est également intéressant de noter que si vous souhaitez utiliser le centre logiciel ubuntu, il existe un module complémentaire pour ruby-dev que vous pouvez sélectionner pour les «fichiers d'en-tête pour la compilation des modules d'extension».
RightHandedMonkey
J'ai utilisé sudo apt-get install ruby1.9.1-devavec ruby ​​1.9.3 avant de voir le commentaire ou cette réponse, et cela m'a permis de construire l'extension des rails. Je ne sais pas si des versions incompatibles comme celle-ci vont me causer des maux de tête plus tard, mais il convient de noter que les rails se sont installés correctement en utilisant une légère modification de la réponse officiellement acceptée.
DWils
Et si vous avez RVM? Alors vous n'avez pas déjà la version rubis dont vous avez besoin?
secrétaire
37

J'avais également besoin que build-essential soit installé:

sudo apt-get install build-essential
James Dunmore
la source
C'était le ticket ici. J'imagine que je devais également installer ruby-dev mais cela n'a pas fonctionné avant d'avoir installé build-essential. un million de mercis
connecté
30

Le problème est toujours récursif sur Ubuntu 13/04 / 13.10 / 14.04

et

sudo apt-get install ruby1.9.1-dev

travaillé pour moi d'accord. Donc, si vous utilisez Ubuntu 13.04 / 13.10 / 14.04, alors cela vous sera très utile.

Cela fonctionne même si la version ruby ​​est 1.9.3. En effet, aucun ruby1.9.3-dev n'est disponible dans le référentiel ...

kenju254
la source
1
Oui, celui-ci a également fonctionné pour moi sur ruby1.9.3. Il n'y avait pas de paquet dans le dépôt ubuntu pour ruby1.9.3-dev.
DWils
pas plus ... travaillé après l'installation de rvm à partir de rvm.io avec --ruby - et probablement mieux pour apt-get supprimer ruby ​​avant
dagelf
18

As-tu essayé:

sudo apt-get install ruby1.8-dev
Matteo Alessani
la source
3
J'utilise 1.9.1, pourquoi dois-je installer ruby1.8-dev?
Omar S.
C'est tellement bizarre en effet que j'ai installé 1.9.1 mais il lit 1.8, quand j'exécute ruby ​​-v, j'obtiens: ruby ​​1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
Omar S.
2
Ruby 1.8 est défini comme rubis par défaut sur votre système
Matteo Alessani
10

J'ai eu l'erreur similaire lors de l'installation du bundle

sudo apt-get install ruby-dev

Fonctionne très bien pour moi et résout le problème Mint 16 ruby1.9.3

Sergey Nikolaev
la source
0

Vous pouvez utiliser RVM (Ruby version manager) qui aide à gérer toutes les versions de ruby ​​sur votre machine, ce qui est très utile pour votre développement (lors de la migration vers une version instable vers une version stable)

ou pour Linux (ubuntu) optez pour sudo apt-get install ruby1.8-dev

puis sudo gem install railspour le vérifier rails -v affichera la version sur les rails

après cela, vous pouvez installer des bundles (gemmes requises pour le développement)

Mohit Verma
la source
Vous pouvez toujours utiliser RVM sur Linux. C'est ce que je fais (mais j'ai toujours le problème de cette erreur mkmf lors de l'installation des rails)
thesecretmaster