Обновление Bundle не выполняется на ffi
Я пытаюсь сделать bundle update
в моем приложении rails, но я получаю следующую ошибку:
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>'
Любые идеи?
Ответы
Ответ 1
Я столкнулся с проблемой, подобной этой вчера.
Мне удалось решить эту проблему, выполнив следующие шаги:
https://github.com/carlhuda/bundler/blob/1-0-stable/ISSUES.md
По сути, возникла проблема с моим пакетом и очистка вещей, и восстановление вещей с нуля разрешило это.
Здесь повторяются шаги:
# 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
Хотя, учитывая сообщение в тексте вывода:
Сначала вы должны установить средства разработки.
Это заставляет меня думать, что вы, возможно, не установили Apple Xcode Developer Tools. Вы проверили это? (Я считаю, что они доступны в Mac App Store.)
Ответ 2
После установки gcc-4.2 из brew вам необходимо создать символическую ссылку:
ln -s /usr/bin/gcc /usr/bin/gcc-4.2
Ответ 3
Для Xcode 5 и более поздних версий:
$ xcode-select --install
чтобы установить средства командной строки.
Ответ 4
На всякий случай попробуйте запустить
sudo/usr/bin/gcc
Вероятно, вы увидите лицензионное соглашение, поэтому прокрутите его, введите "согласен" и попробуйте снова установить gem.
Ответ 5
Обратите внимание:
Если вы недавно обновили Xcode, вам просто нужно открыть Xcode и принять последнее соглашение.
У меня была такая же проблема, и я недавно установил обновление для Xcode (v6.1) и решил это с помощью следующих шагов:
- открыть Xcode
- принять новое соглашение
- Обновление пакета повторной загрузки
Ответ 6
Установка "Инструменты командной строки" с помощью Xcode сделала трюк.
Если у вас есть Xcode 4.5 open Настройки > Загрузки > Выберите вкладку Компоненты и нажмите Установить рядом с Инструменты командной строки.
Хотя я установил из Xcode, вы также можете скачать пакет без него из Apple Developer Downloads и поиск "Инструменты командной строки" .
Ответ 7
Мне пришлось принять лицензию Xcode User:
Запуск sudo xcrun cc должен вызвать версию cli для Xcode лицензионное соглашение. Другой вариант - открыть Xcode.app и согласиться с GUI.
Возможно, вызвано обновлением OSX.
http://blog.tomhennigan.co.uk/post/62238548037/agreeing-to-the-xcode-license-from-the-command
Ответ 8
Для меня у меня просто не установлено gcc, разрешите в Ubuntu:
sudo apt install build-essential
Ответ 9
Mac OSx 10.10.2 yosemite
CC=/usr/bin/i686-apple-darwin11-llvm-gcc-4.2 gem install ffi
и это - отметьте, что у вас есть компилятор 4.2 в /usr/bin
, который вы можете подключить к
ls /usr/bin|grep gcc|grep 4.2
Вам не нужно уничтожать все ваши локальные драгоценные камни или переопределять символические ссылки для этого - это пустая трата времени и, скорее всего, создаст больше проблем, чем она решит.
обратите внимание, что путь вашего бункера может быть другим, если вам нужно установить через brew
brew install apple-gcc42
Ответ 10
Также метод:
export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
bundle update
ffi.h
находится в ${SDKROOT}/usr/include/ffi/ffi.h
.
Ответ 11
Ubuntu Trusty LTS 14.04
Необходимо переключиться с ruby 2.2.1 на 2.3.0 для поддержки новых версий gem в приложении Rails.
Решение:
-
rvm get stable
-
rvm remove 2.3.0
-
rvm install 2.3.0
-
bundle install