2012-05-13 9 views
22

ich versucht bin ein bundle update auf meine Rails-Anwendung zu tun, aber ich erhalte die folgende Fehlermeldung:Bundle Update fehlschlägt auf ffi

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

Irgendwelche Ideen?

Antwort

26

Ich stieß auf ein ähnliches Problem wie gestern.

Ich konnte es lösen mit diesen Schritten:

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

Im Wesentlichen gibt ein Problem mit meinem Bündel war und es Dinge und Wiederaufbau Dinge von Grund auf gelöst zu löschen.

Die Schritte werden hier wiederholt:

# 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 

Obwohl angesichts der Nachricht im Ausgangstext:

You have to install development tools first.

Das hat mich Sie denken lässt, kann einfach nicht die Apple Xcode Developer Tools installiert haben. Hast du das überprüft? (Ich glaube, sie im Mac App Store erhältlich sind.)

+2

Ich habe Xcode installiert, aber es scheint, dass Bundler es aus irgendeinem Grund nicht finden kann ... Ich habe Ihre Vorschläge sowie die Installation https://github.com/kennethreitz/osx-gcc-installer und jetzt Alles funktioniert gut. Danke für die Hilfe! Ich habe vor, Ihnen das Kopfgeld zu geben, aber SO lässt mich 23 Stunden warten. Ich gebe es dir dann :) –

+0

Danke! Sehr geschätzt! –

+0

thx! Es ist so schön! – Madao

10

Einmal installiert gcc-4.2 aus brauen, müssen Sie Symlink davon erstellen:

ln -s /usr/bin/gcc /usr/bin/gcc-4.2 
+0

Das war es, was es letztendlich für mich getan hat, den eventmachine Juwel zu installieren. Ich hatte versucht, rvm zu aktualisieren, Ruby neu installieren, stellen Sie sicher, Befehlszeilen-Tools waren in XCode (4.6) und Haufen anderer Sachen. Ich habe versucht, CC =/usr/local/bin/gcc-4.2 und ohne das zu setzen, aber es scheint, als ob es endete mit llvm-gcc seit jetzt kompiliert "/usr/bin/[email protected] ->/usr/bin/gcc "und"/usr/bin/gcc @ -> llvm-gcc-4.2 ". Ich bin total verwirrt warum, aber es hat funktioniert. Hoffentlich macht es nichts anderes kaputt wie Brauinstallationen ... – mmrobins

+0

Für mich habe ich einfach meine XCode und Kommandozeilen-Tools aktualisiert, gefolgt von Ihrem Vorschlag zum Symlink zu /usr/bin/gcc-4.2. Vielen Dank! Ich hätte das für eine Weile nicht herausgefunden. –

+0

Die Installation der XCode-Befehlszeilentools und das Ausführen von 'gem install ffi' wurde ohne Erfolg versucht. Nach dem Hinzufügen von Symlink, wie von @kiero ffi-1.9.3 vorgeschlagen installiert gut. Vielen Dank! – Lenart

4

Installieren "Command Line Tools" über Xcode Hat den Trick gemacht.

Wenn Sie Xcode 4.5 offen Einstellungen>Downloads> Wählen Komponenten Registerkarte haben und neben Befehlszeilen-Tools installieren klicken.

Obwohl ich von Xcode installiert habe, können Sie das Paket auch ohne es von Apple's Developer Downloads and searching for "Command Line Tools" herunterladen.

10

Für Xcode 5 und höher:

$ xcode-select --install 

die Kommandozeilen-Tools zu installieren.

+0

Das half! Vielen Dank! –

5

Nur für den Fall versuchen

sudo/usr/bin/gcc

Sie werden wahrscheinlich Vereinbarung sehen Lizenz zu laufen, so blättern thgough es, Typ "einverstanden" und versuchen Juwel wieder zu installieren.

+0

Sie erkennen, wie alt diese Frage ist? Und es hat eine akzeptierte Antwort –

+3

das tatsächlich gelöst das Problem für mich, also danke für diese späte Antwort. – rubiii

+1

Das hat bei mir funktioniert. Danke, Mann! Alle obigen Lösungen haben es nicht gelöst, aber das hat es getan. Gute Arbeit! –

5

Bitte beachten Sie:

Wenn Sie vor kurzem Xcode aktualisiert haben, müssen Sie nur Xcode öffnen und akzeptieren die neueste Vereinbarung.

Ich hatte das gleiche Problem und hatte kürzlich ein Update auf Xcode (v6.1) und löste es mit diesen Schritten:

  1. offen Xcode
  2. neue Vereinbarung
  3. Rerun Bundle Update akzeptieren
0

Mac OS X 10.10.2 yosemite

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

und das ist es - überprüfen Sie, dass Sie 4.2 Compiler in /usr/bin haben, dass Sie c ein Haken in

ls /usr/bin|grep gcc|grep 4.2 

Sie müssen alle Ihre Plätze in der Umgebung oder außer Kraft setzen Symlinks nicht auslöschen dieses zu tun - seine eine Verschwendung von Zeit und wird wahrscheinlich mehr Probleme schaffen es dann löst.

Bitte beachten Sie, dass Ihr ist Pfad unterschiedlich sein kann, wenn Sie über Gebräu installieren benötigen

brew install apple-gcc42 
0

Auch Methode:

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

ffi.h ist in ${SDKROOT}/usr/include/ffi/ffi.h gefunden werden.

0

Ubuntu Trusty LTS 14,04

benötigt von Ruby 2.2.1 bis 2.3.0 wechseln neueren Versionen Juwel in Rails-Anwendung zu unterstützen.

Lösung:

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

Für mich ich einfach nicht gcc installiert haben, lösen in Ubuntu von:

sudo apt install build-essential 
Verwandte Themen