Échec de la construction de l’extension native gem (installation de Compass)

Lorsque j’essaie d’installer la dernière version de compas ( https://rubygems.org/gems/compass/versions/1.0.0.alpha.17 ), j’obtiens l’erreur suivante.

ERROR: Error installing compass: ERROR: Failed to build gem native extension. ERROR: Error installing compass: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb checking for ffi.h... no checking for ffi.h in /usr/local/include,/usr/include/ffi... yes checking for ffi_call() in -lffi... yes checking for ffi_prep_closure()... yes checking for ffi_raw_call()... no checking for rb_thread_blocking_region()... yes checking for rb_thread_call_with_gvl()... yes checking for rb_thread_call_without_gvl()... yes checking for ffi_prep_cif_var()... no creating extconf.h creating Makefile make "DESTDIR=" clean make "DESTDIR=" compiling AbstractMemory.c compiling ArrayType.c compiling Buffer.c compiling Call.c Call.c:303:5: warning: implicit declaration of function 'rb_thread_call_without_gvl' is invalid in C99 [-Wimplicit-function-declaration] rbffi_thread_blocking_region(call_blocking_function, data, (void *) -1, NULL); ^ ./Thread.h:78:39: note: expanded from macro 'rbffi_thread_blocking_region' # define rbffi_thread_blocking_region rb_thread_call_without_gvl ^ 1 warning generated. compiling ClosurePool.c compiling DataConverter.c DataConverter.c:43:1: warning: control may reach end of non-void function [-Wreturn-type] } ^ 1 warning generated. compiling DynamicLibrary.c compiling ffi.c compiling Function.c Function.c:479:33: warning: incompatible pointer types passing 'VALUE (void *)' to parameter of type 'void *(*)(void *)' [-Wincompatible-pointer-types] rb_thread_call_with_gvl(callback_with_gvl, &cb); ^~~~~~~~~~~~~~~~~ Function.c:102:46: note: passing argument to parameter 'func' here extern void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1); ^ Function.c:563:9: warning: implicit declaration of function 'rb_thread_call_without_gvl' is invalid in C99 [-Wimplicit-function-declaration] rb_thread_call_without_gvl(async_cb_wait, &w, async_cb_stop, &w); ^ Function.c:738:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ 3 warnings generated. compiling FunctionInfo.c compiling LastError.c compiling LongDouble.c compiling MappedType.c compiling MemoryPointer.c compiling MethodHandle.c compiling Platform.c compiling Pointer.c compiling Struct.c compiling StructByReference.c compiling StructByValue.c compiling StructLayout.c compiling Thread.c compiling Type.c compiling Types.c compiling Variadic.c linking shared-object ffi_c.bundle clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future] clang: note: this will be a hard error (cannot be downgraded to a warning) in the future make: *** [ffi_c.bundle] Error 1 make failed, exit code 2 Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/ffi-1.9.3 for inspection. Results logged to /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-13/2.0.0/ffi-1.9.3/gem_make.out 

Que se passe t-il ici? Comment installer la dernière boussole sans erreur?

Essayez ceci, puis essayez à nouveau d’installer la boussole

 apt-get install ruby-dev 

Pour installer la boussole Sur Mac OS X 10.10 (Yosemite), vous devez effectuer les opérations suivantes:

1. Configurer l’environnement Ruby

  • Assurez-vous que ruby ​​est installé et à jour: ruby -v
  • Mettre à jour la mise à jour de gem sudo gem update --system

2. Configurer l’environnement MAC

-Installez les outils de ligne de commande Xcode c’est la clé pour installer Compass. xcode-select --install

-Installer les outils de ligne de commande Xcode est la clé pour que Compass fonctionne sur OS X

3. Installez Compass

sudo gem install compass

La meilleure façon est d’ sudo apt-get install ruby-compass pour installer la boussole.

J’ai lutté avec vous même problème pendant environ 3 heures. A partir de Compass 1.0.alpha19 , l’exigence est pour la version 1.9.3 de rvm.

Il y a plusieurs messages non collectés, mais ce qui a fonctionné pour moi a été le suivant:

  1. sudo gem uninstall sass
  2. sudo gem uninstall compass
  3. rvm install ruby-1.9.3-p448
  4. sudo gem install sass --pre
  5. sudo gem install compass --pre

et ça l’a fait. J’espère que cela fonctionne pour vous aussi!

Vous pouvez essayer avec Debian avec

 sudo apt-get install gcc ruby-dev rubygems compass 

pour Fedora, Centos

 yum -y install gcc ruby-devel rubygems compass 

Cela a fonctionné pour moi.

Pour que je puisse résoudre ce problème, je devais m’assurer de disposer de la version la plus récente de Ruby et de gems gem update --system ; alors, je devais m’assurer que Xcode et les outils de ligne de commande étaient installés: xcode-select --install .

Salut ce fut un défi pour le faire fonctionner sur Mac, donc en tout cas voici une solution

  1. Installer des macports
  2. Installer rvm
  3. Redémarrer le terminal
  4. Exécutez les rvm requirements puis lancez rvm install 2.1
  5. Et dernière étape pour exécuter gem install compass --pre

Je ne suis pas sûr, mais la version Ruby sur Mavericks ne supporte pas les extensions natives, etc.

Sur Mac OS, vous devez installer cette fonctionnalité!

 xcode-select --install 

Je ne sais pas pourquoi aucune de ces réponses ne correspond à la bonne réponse, mais j’ai atterri ici grâce à une recherche Google, alors je vais vous transmettre ce que je sais …

La méthode de @paul_g était proche pour moi, mes pas sur Mac OSX10.9 Retina:

  • Installer des macports
  • Installez rvm (stable avec ruby ​​add --insecure indicateur pour les problèmes liés à SSL) $ \curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby \curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby
  • Redémarrer Terminal / Ressource votre profil
  • Exécution des rvm requirements --with-gcc=clang Vous n’aurez pas à mettre à jour Ruby car vous avez téléchargé la dernière version stable
  • Et dernière étape pour exécuter gem install compass --pre

Vous devrez peut-être installer les outils de ligne de commande d’Apple, qui ne sont probablement pas installés par défaut sur votre système. Je recevais la même erreur, mais avant de suivre l’une des instructions ici, j’ai installé les outils de ligne de commande (à cause d’un problème sans rapport) et j’ai installé le compas sans problème lorsque j’ai réessayé. YMMV.

Pour installer Compass sur Yosemite, vous devez configurer l’environnement Ruby et installer les outils de ligne de commande Xcode. Mais le plus important, après la mise à jour de Xcode, assurez-vous de lancer l’application Xcode et d’accepter les termes de la licence Apple . Il complétera l’installation des composants. Après cela, vous pouvez installer Compass: sudo gem install compass

vous devez avoir gcc, json_pure

je recueille des informations de plusieurs postes

 sudo gem uninstall sass sudo gem uninstall compass sudo gem update --system gem install json_pure (if you have already have continued to next step) sudo yum install gcc gcc-c++ (if you have already have continued to next step) sudo gem install sass sudo gem install compass 

Sur yosemite, il vous suffit d’installer les outils de ligne de commande. alors ça marche.

Même si d’autres gems installés correctement. Vous devez exécuter xcode-select –install pour que gem install compass fonctionne.

Bonne chance.

Sur Mac OS X 10.9, si vous essayez xcode-select --install , vous obtiendrez l’erreur suivante:

Impossible d’installer le logiciel car il n’est pas disponible actuellement sur le serveur de mise à jour de logiciels.

La solution consiste à télécharger les outils de ligne de commande (OS X 10.9) directement à partir du site Web d’Apple: https://developer.apple.com/downloads/index.action?name=for%20Xcode%20-

Vous pourrez alors installer la dernière version des outils de ligne de commande.

Dans Ubuntu 14.04, alors que vous exécutez apt-get install rubygems , il y a une erreur

E: le paquetage ‘rubygems’ n’a pas de candidat à l’installation

suivre la commande résoudre les problèmes.

sudo apt-get install gcc ruby-devel rubygems-intégration ruby-compass

Essayez brew install coreutils .

J’ai rencontré ce problème lors de la reconstruction d’un projet Sass / Compass vieillissant récemment mis à jour par Ruby 2.2.5 par un collègue. Le projet utilise rvm et bundler. C’étaient mes commandes

 $ rvm install ruby-2.2.5 $ rvm use ruby-2.2.5 $ gem install bundler $ bundle install 

Cela m’a amené à bash les erreurs d’installation célèbres de ffi , rapscopes autour de l’environnement StackOverflow:

 An error occurred while installing ffi (1.9.14), and Bundler cannot continue. 

La plupart des suggestions pour résoudre ce problème consistent à installer les outils de ligne de commande Xcode. Cependant, ceci était déjà installé dans mon environnement:

 $ xcode-select -p /Library/Developer/CommandLineTools 

D’autres suggestions pour installer gcc … alors j’ai essayé:

 $ brew install gcc46 

Mais cela a également échoué en raison d’une erreur de segmentation … ¯\_(ツ)_/¯ .

Donc, j’ai ensuite essayé d’installer la boussole à la main, juste pour voir si cela donnerait la même erreur de ffi :

 $ gem install compass 

Mais à ma grande surprise, j’ai eu une erreur totalement différente:

 make: /usr/local/bin/gmkdir: No such file or directory 

J’ai donc cherché ce numéro et trouvé cet ancien article de blog qui disait d’installer coreutils:

 $ brew install coreutils 

Après avoir installé coreutils avec Homebrew, bundler a pu terminer et installer la boussole et les dépendances avec succès.

La fin.

  • sudo gem update –system
  • sudo gem installer boussole

quand

gem installer install

est exécuté aussi cette erreur a été placée dans le terminal.

 Failed to build gem native extension 

s’il vous plaît faire la même chose

 xcode-select --install 

et il va régler ce problème aussi

Pour Mac OS:

Mon erreur était que j’avais oublié de sélectionner l’option dans XCode – Preferences – Locations – Outils de ligne de commande après la nouvelle installation de XCode (j’avais 2 versions et plus tard j’en ai supprimé une). Peut-être que cela aidera quelqu’un.

entrer la description de l'image ici

Si vous utilisez Ubuntu, vous devriez essayer d’installer build-essential

 apt install build-essential 

J’ai eu des problèmes avec l’installation de gems sur une nouvelle installation d’ubuntu, et cette solution a fonctionné pour moi.

J’avais besoin d’installer les outils de ligne de commande les plus récents (dans les 30 derniers jours) à partir de l’App Store d’Apple.

J’ai eu le même problème sur Linux Mint mais j’ai été capable de le réparer en désinstallant ruby ​​et de l’installer à nouveau.

Désinstallez ruby:

 sudo apt-get remove ruby 

Il a rapporté des paquets de rbuy comme:

 Package 'ruby' is not installed, so not removed The following packages were automatically installed and are no longer required: libruby2.2 ruby-chunky-png ruby-sass rubygems-integration Use 'apt-get autoremove' to remove them. 

Désinstallez les paquets restants *

 apt-get autoremove 

Installer à nouveau rbuy

 sudo apt-get install ruby2.2 

Installer Compass

 sudo gem install compass 

La dernière commande a été exécutée avec succès.