31 votes

error : failed to build gem native extension when installing rails on mac mountian lion os

J'ai récemment effectué une mise à jour vers Mountain Lion et réinstallé Ruby, mais lorsque j'essaie d'exécuter une application Rails de test, j'obtiens un message d'erreur indiquant que "Rails n'est pas actuellement installé" sur mon système. Je fais ce qui est indiqué, en tapant sudo gem install rails et obtenir :

cleared faster_require caches due to new gem install...
Successfully installed rails-3.2.7
1 gem installed
Installing ri documentation for rails-3.2.7...
Installing RDoc documentation for rails-3.2.7...

Mais lorsque je vérifie quelle version de rails est installée, voici ce que j'obtiens :

Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

You can then rerun your "rails" command.

J'ai aussi essayé gem install rails et obtenir :

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

        /Users/aileen/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
creating Makefile

make
compiling generator.c
make: /usr/bin/gcc-4.2: No such file or directory
make: *** [generator.o] Error 1

Gem files will remain installed in /Users/aileen/.rvm/gems/ruby-1.9.3-p194@rails327/gems/json-1.7.4 for inspection.
Results logged to /Users/aileen/.rvm/gems/ruby-1.9.3-p194@rails327/gems/json-1.7.4/ext/json/ext/generator/gem_make.out

0 votes

Il y a un bouton qui dit : "Cliquez pour accepter cette réponse car elle a résolu votre problème ou a été la plus utile pour trouver votre solution". Si vous avez encore besoin d'aide, améliorez les questions si elles sont liées ou créez une autre question.

40voto

Franco Rondini Points 4317

Je vois que vous utilisez ruby 1.9.3 en utilisant rvm en OS X 10.8.2 (Mountain lion) Il est possible que certaines gemmes référencées par rails aient besoin de gcc-4.2 sur /usr/bin pour construire l'estension native.

Dans Mountain Lion, même après avoir installé Outils CLI de Xcode 4.5 (en ouvrant le menu XCode - Préférences Téléchargement -> Outils de ligne de commande) vous obtenez /usr/bin/gcc mais pas /usr/bin/gcc-4.2 ; malheureusement le processus de construction de certaines extensions natives repose sur /usr/bin/gcc-4.2

Cependant, je viens d'installer rails sans problème sur un environnement tel que le vôtre. J'ai préalablement fixé l'environnement comme indiqué dans l'article du blog de Carina C. Zona : Correction pour "make : /usr/bin/gcc-4.2 : No such file or directory" c'est-à-dire :

  • vérifiez que vous avez installé Homebrew

    brew --version

    devrait rapporter 0.9.3 ou plus

    mise à jour du brassage

  • maintenant vous pouvez installer gcc-4.2 et créer un lien symbolink où il est inspecté par le système de construction.

    brew tap homebrew/dupes

    brew install apple-gcc42

    sudo ln -s /usr/local/bin/gcc-4.2 /usr/bin/gcc-4.2

  • maintenant vous êtes prêt à installer rails avec succès

    gem install rails

Vous devriez obtenir un résultat comme celui-ci

Fetching: i18n-0.6.1.gem (100%)
Fetching: activesupport-3.2.8.gem (100%)
Fetching: builder-3.0.4.gem (100%)
Fetching: activemodel-3.2.8.gem (100%)
Fetching: rack-cache-1.2.gem (100%)
Fetching: rack-test-0.6.2.gem (100%)
Fetching: journey-1.0.4.gem (100%)
Fetching: hike-1.2.1.gem (100%)
Fetching: sprockets-2.1.3.gem (100%)
Fetching: erubis-2.7.0.gem (100%)
Fetching: actionpack-3.2.8.gem (100%)
Fetching: arel-3.0.2.gem (100%)
Fetching: tzinfo-0.3.34.gem (100%)
Fetching: activerecord-3.2.8.gem (100%)
Fetching: activeresource-3.2.8.gem (100%)
Fetching: polyglot-0.3.3.gem (100%)
Fetching: treetop-1.4.12.gem (100%)
Fetching: mail-2.4.4.gem (100%)
Fetching: actionmailer-3.2.8.gem (100%)
Fetching: rack-ssl-1.3.2.gem (100%)
Fetching: railties-3.2.8.gem (100%)
Fetching: rails-3.2.8.gem (100%)
Successfully installed i18n-0.6.1
Successfully installed activesupport-3.2.8
Successfully installed builder-3.0.4
Successfully installed activemodel-3.2.8
Successfully installed rack-cache-1.2
Successfully installed rack-test-0.6.2
Successfully installed journey-1.0.4
Successfully installed hike-1.2.1
Successfully installed sprockets-2.1.3
Successfully installed erubis-2.7.0
Successfully installed actionpack-3.2.8
Successfully installed arel-3.0.2
Successfully installed tzinfo-0.3.34
Successfully installed activerecord-3.2.8
Successfully installed activeresource-3.2.8
Successfully installed polyglot-0.3.3
Successfully installed treetop-1.4.12
Successfully installed mail-2.4.4
Successfully installed actionmailer-3.2.8
Successfully installed rack-ssl-1.3.2
Successfully installed railties-3.2.8
Successfully installed rails-3.2.8
22 gems installed
Installing ri documentation for i18n-0.6.1...
Building YARD (yri) index for i18n-0.6.1...
Installing ri documentation for activesupport-3.2.8...
Building YARD (yri) index for activesupport-3.2.8...
Installing ri documentation for builder-3.0.4...
Building YARD (yri) index for builder-3.0.4...
Installing ri documentation for activemodel-3.2.8...
Building YARD (yri) index for activemodel-3.2.8...
Installing ri documentation for rack-cache-1.2...
Building YARD (yri) index for rack-cache-1.2...
Installing ri documentation for rack-test-0.6.2...
Building YARD (yri) index for rack-test-0.6.2...
Installing ri documentation for journey-1.0.4...
Building YARD (yri) index for journey-1.0.4...
Installing ri documentation for hike-1.2.1...
Building YARD (yri) index for hike-1.2.1...
Installing ri documentation for sprockets-2.1.3...
Building YARD (yri) index for sprockets-2.1.3...
Installing ri documentation for erubis-2.7.0...
Building YARD (yri) index for erubis-2.7.0...
Installing ri documentation for actionpack-3.2.8...
Building YARD (yri) index for actionpack-3.2.8...
Installing ri documentation for arel-3.0.2...
Building YARD (yri) index for arel-3.0.2...
Installing ri documentation for tzinfo-0.3.34...
Building YARD (yri) index for tzinfo-0.3.34...
Installing ri documentation for activerecord-3.2.8...
Building YARD (yri) index for activerecord-3.2.8...
Installing ri documentation for activeresource-3.2.8...
Building YARD (yri) index for activeresource-3.2.8...
Installing ri documentation for polyglot-0.3.3...
Building YARD (yri) index for polyglot-0.3.3...
Installing ri documentation for treetop-1.4.12...
Building YARD (yri) index for treetop-1.4.12...
Installing ri documentation for mail-2.4.4...
Building YARD (yri) index for mail-2.4.4...
Installing ri documentation for actionmailer-3.2.8...
Building YARD (yri) index for actionmailer-3.2.8...
Installing ri documentation for rack-ssl-1.3.2...
Building YARD (yri) index for rack-ssl-1.3.2...
Installing ri documentation for railties-3.2.8...
Building YARD (yri) index for railties-3.2.8...
Installing ri documentation for rails-3.2.8...
Building YARD (yri) index for rails-3.2.8...
Installing RDoc documentation for i18n-0.6.1...
Installing RDoc documentation for activesupport-3.2.8...
Installing RDoc documentation for builder-3.0.4...
Installing RDoc documentation for activemodel-3.2.8...
Installing RDoc documentation for rack-cache-1.2...
Installing RDoc documentation for rack-test-0.6.2...
Installing RDoc documentation for journey-1.0.4...
Installing RDoc documentation for hike-1.2.1...
Installing RDoc documentation for sprockets-2.1.3...
Installing RDoc documentation for erubis-2.7.0...
Installing RDoc documentation for actionpack-3.2.8...
Installing RDoc documentation for arel-3.0.2...
Installing RDoc documentation for tzinfo-0.3.34...
Installing RDoc documentation for activerecord-3.2.8...
Installing RDoc documentation for activeresource-3.2.8...
Installing RDoc documentation for polyglot-0.3.3...
Installing RDoc documentation for treetop-1.4.12...
Installing RDoc documentation for mail-2.4.4...
Installing RDoc documentation for actionmailer-3.2.8...
Installing RDoc documentation for rack-ssl-1.3.2...
Installing RDoc documentation for railties-3.2.8...
Installing RDoc documentation for rails-3.2.8...

11 votes

C'est exactement ça, mais le homebrew n'est pas nécessaire. Tout ce qui est nécessaire est de créer un lien symbolique de gcc-4.2 vers gcc : sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

1 votes

Le commentaire de Justin est tout à fait juste ! Merci pour la clarification. Mon message fait référence à un scénario assez courant pour les utilisateurs de ruby sous osx qui utilisent souvent brew comme gestionnaire de paquets.

1 votes

Ce post m'a complètement fait commencer avec HAR <3

9voto

Justin M. Keyes Points 2268

@Franco est correct : l'"extension native" construit des scripts attendent /usr/bin/gcc-4.2 qui n'existe pas dans OS X Mountain Lion.

  • Si vous mis à niveau vers Mountain Lion à partir d'une version antérieure d'OS X, alors vous avez peut-être déjà gcc. Dans ce cas, créez simplement un lien symbolique vers gcc : sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2
  • Si vous avez un nouvelle installation de Mountain Lion alors vous n'avez peut-être pas du tout gcc. Dans ce cas, vous devrez installez gcc comme l'explique @Franco.

Ce n'est pas un problème spécifique aux gemmes "rails". Toute gemme qui construit des "extensions natives" échoue :

Gem::Installer::ExtensionBuildError : ERROR : Échec de la construction de l'extension native de Gem. [...] Vous devez d'abord installer les outils de développement.

Dans mon cas, j'essayais d'installer octopress qui dépend de quelque chose appelé RedCloth.

1 votes

Dans mon cas, il s'est plaint de g++-4.2 au lieu de gcc-4.2, mais j'ai créé le même lien symbolique que ci-dessus, en remplaçant les c par des +, et ça a marché.

4voto

Shyam Habarakada Points 2360

J'ai rencontré ce problème également, avec Mountain Lion. La gemme qui échouait à l'installation était json . Pour résoudre ce problème, j'ai installé les outils xcode CLI et j'ai fait un lien symbolique avec le gcc installé (i686-apple-darwin11-llvm-gcc-4.2) en tant que /usr/bin/gcc-4.2 . Une fois que cela a été fait, ça a marché.

En essayant d'installer une autre gemme, j'ai rencontré un problème similaire où l'étape de construction native se plaignait de l'absence de g++-4.2. J'ai créé un lien symbolique exactement comme je l'ai fait avec gcc-4.2 ci-dessus, et cela a fonctionné.

MISE À JOUR : OSX Mavericks avec la dernière RVM

Avec le dernier OSX 10.9 et le dernier RVM, ces problèmes semblent avoir disparu. Donc, il est temps de mettre à niveau.

3voto

Harro Points 418

Essayez de travailler sur ce premièrement

Il suppose que vous avez déjà un homebrew. Si vous ne l'avez pas, vous pouvez l'obtenir à partir de aquí

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X