`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

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

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.


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

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

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 ...


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

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




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)


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.