web-dev-qa-db-fra.com

La mise à jour du paquet échoue sur ffi

J'essaie de faire un bundle update sur mon application Rails mais j'obtiens l'erreur suivante:

Installing ffi (1.0.11) with native extensions Unfortunately, a fatal error has occurred. Please report this error to the Bundler issue tracker at https://github.com/carlhuda/bundler/issues so that we can fix it. Thanks!
/Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

        /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/bin/Ruby extconf.rb 
checking for ffi.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --Ruby=/Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/bin/Ruby
    --with-ffi_c-dir
    --without-ffi_c-dir
    --with-ffi_c-include
    --without-ffi_c-include=${ffi_c-dir}/include
    --with-ffi_c-lib
    --without-ffi_c-lib=${ffi_c-dir}/lib
    --with-libffi-config
    --without-libffi-config
    --with-pkg-config
    --without-pkg-config
/Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:506:in `try_cpp'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:931:in `block in have_header'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:254:in `open'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:284:in `block in postpone'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:254:in `open'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:280:in `postpone'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:789:in `checking_for'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:930:in `have_header'
    from extconf.rb:9:in `<main>'


Gem files will remain installed in /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/ffi-1.0.11 for inspection.
Results logged to /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/ffi-1.0.11/ext/ffi_c/gem_make.out
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:530:in `block in build_extensions'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:505:in `each'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:505:in `build_extensions'
    from /Users/Kyle/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:180:in `install'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/source.rb:90:in `block in install'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/rubygems_integration.rb:82:in `preserve_paths'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/source.rb:89:in `install'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/installer.rb:73:in `block in install_gem_from_spec'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/rubygems_integration.rb:97:in `with_build_args'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/installer.rb:72:in `install_gem_from_spec'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/installer.rb:56:in `block in run'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/installer.rb:55:in `run'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/installer.rb:12:in `install'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/cli.rb:271:in `update'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/vendor/thor/task.rb:22:in `run'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/vendor/thor.rb:263:in `dispatch'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/vendor/thor/base.rb:386:in `start'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/gems/bundler-1.1.0/bin/bundle:13:in `<top (required)>'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/bin/bundle:19:in `load'
    from /Users/Kyle/.rvm/gems/Ruby-1.9.3-p125/bin/bundle:19:in `<main>'

Des idées?

22
Kyle Decot

J'ai rencontré un problème similaire à celui d'hier.

J'ai été capable de le résoudre en utilisant ces étapes:

https://github.com/carlhuda/bundler/blob/1-0-stable/ISSUES.md

Essentiellement, il y avait un problème avec mon paquet, le nettoyage et la reconstruction d'éléments à partir de zéro l'ont résolu.

Les étapes sont répétées ici:

# remove user-specific gems and git repos
rm -rf ~/.bundle/ ~/.gem/

# remove system-wide git repos and git checkouts
rm -rf $GEM_HOME/bundler/ $GEM_HOME/cache/bundler/

# remove project-specific settings and git repos
rm -rf .bundle/

# remove project-specific cached .gem files
rm -rf vendor/cache/

# remove the saved resolve of the Gemfile
rm -rf Gemfile.lock

# try to install one more time
bundle install

Bien que, compte tenu du message dans le texte de sortie:

Vous devez d'abord installer les outils de développement.

Cela me fait penser que vous n’avez peut-être pas installé le Outils de développement Apple Xcode . Avez-vous vérifié cela? (Je pense qu'ils sont disponibles dans le Mac App Store.)

28
Kevin Bedell

Pour Xcode 5 et versions ultérieures:

$ xcode-select --install

installer les outils de ligne de commande.

11
Lasse Bunk

Une fois installé gcc-4.2 à partir de brew, vous devez en créer un lien symbolique:

ln -s /usr/bin/gcc /usr/bin/gcc-4.2
10
kiero

Notez s'il vous plaît:

Si vous avez récemment mis à jour Xcode, vous devrez peut-être simplement ouvrir Xcode et accepter le dernier accord .

J'ai eu le même problème et j'avais récemment installé une mise à jour de Xcode (v6.1) et je l'ai résolu en procédant comme suit:

  1. ouvrir Xcode
  2. accepter un nouvel accord
  3. réexécuter la mise à jour du paquet
5
theotherjim

Juste au cas où essayer de courir

Sudo/usr/bin/gcc

Vous verrez probablement un accord de licence, alors parcourez-le, tapez "consent" et essayez à nouveau d'installer Gem.

5
DiS

L'installation d '"Outils de ligne de commande" via Xcode a fonctionné.  

Si vous avez Xcode 4.5 ouvert Préférences > Téléchargements > Sélectionnez Composants onglet et cliquez sur Installer à côté de Outils de ligne de commande

Bien que j'aie installé à partir de Xcode, vous pouvez également télécharger le package sans celui-ci depuis Téléchargements pour les développeurs Apple et rechercher "Outils de ligne de commande" .

4
Dan Sandland

Pour moi, je n'ai tout simplement pas installé gcc, résolvez dans Ubuntu par:

Sudo apt install build-essential
3

Je devais accepter la licence utilisateur Xcode: 

L'exécution de Sudo xcrun cc devrait faire apparaître la version CLI du contrat de licence Xcode . Une autre option consiste à ouvrir Xcode.app et à vous mettre d’accord sur Dans l’interface graphique.

Peut-être causé par la mise à jour d'OSX.

http://blog.tomhennigan.co.uk/post/62238548037/agreeing-to-the-xcode-license-from-the-command

1
i.bajrai

Aussi méthode:

export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
bundle update

ffi.h se trouve dans ${SDKROOT}/usr/include/ffi/ffi.h.

0
Gracjan Polak

Ubuntu Trusty LTS 14.04

Nécessaire pour passer de Ruby 2.2.1 à 2.3.0 afin de prendre en charge les nouvelles versions de gem dans l'application Rails.

Solution:

  1. rvm get stable
  2. rvm remove 2.3.0
  3. rvm install 2.3.0
  4. bundle install
0
Alex M.

Mac OSx 10.10.2 yosemite

 CC=/usr/bin/i686-Apple-darwin11-llvm-gcc-4.2 gem install ffi

et thats it -check que vous avez le compilateur 4.2 dans /usr/bin que vous pouvez accrocher

ls /usr/bin|grep gcc|grep 4.2

Vous ne devez pas effacer toutes vos gemmes locales ou remplacer les liens symboliques pour le faire - c'est une perte de temps et va probablement créer plus de problèmes, puis il en résout.

veuillez noter que votre chemin de bac peut être différent si vous avez besoin d'installer via brassage

brew install Apple-gcc42 
0
lfender6445