rails 5.0.0 при установке "nio4r": не удалось создать собственное расширение gem

вот журналы:http://pastebin.com/CAgur9xd

Installing nio4r 1.2.1 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    C:/RailsInstaller/Ruby2.2.0/bin/ruby.exe -r ./siteconf20160720-8272-c88sgk.rb extconf.rb --with-cflags=-std=c99
checking for unistd.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
        --without-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=C:/RailsInstaller/Ruby2.2.0/bin/$(RUBY_BASE_NAME)
C:/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
        from C:/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/mkmf.rb:587:in `try_cpp'
         from C:/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/mkmf.rb:1060:in `block in have_header'
        from C:/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/mkmf.rb:911:in `block in checking_for'
        from C:/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/mkmf.rb:351:in `block (2 levels) in postpone'
        from C:/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/mkmf.rb:321:in `open'
        from C:/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/mkmf.rb:351:in `block in postpone'
        from C:/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/mkmf.rb:321:in `open'
        from C:/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/mkmf.rb:347:in `postpone'
        from C:/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/mkmf.rb:910:in `checking_for'
        from C:/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/mkmf.rb:1059:in `have_header'
        from extconf.rb:3:in `<main>'

extconf failed, exit code 1

при установке пакета он возвращается(начинается с строки 117 в журналах):

Installing nio4r 1.2.1 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

поэтому пакет не может быть установлен. Он возвращается в конце :

An error occurred while installing nio4r (1.2.1), and Bundler cannot continue.
Make sure that `gem install nio4r -v '1.2.1'` succeeds before bundling.

Примечание: я пробовал решения в других вопросах, но это все то же самое. Если можно установить" nio4r " вручную, пожалуйста, скажите мне, как .

9 ответов


Я сталкиваюсь с той же проблемой, когда я пытался обновить свои Rails до V5.0.0, я следую этой инструкции, и она работает отлично. Прочитайте раздел "Установка Ruby DevKit" здесь >> http://jekyll-windows.juthilo.com/1-ruby-and-devkit/


решение для Fedora 64bit

sudo dnf install redhat-rpm-config

Я столкнулся с этой проблемой, когда я тоже настраивал рельсы. (ищет альтернативу php).

  • я понял, что я установил x86 ruby с x64 Devkit, поэтому я сначала загрузил x64 ruby, который я установил и удалил версию x86. Я убедился, что мои переменные пути были хорошо установлены.
  • затем я установил devkit, используя инструкции на этой странице http://rubyonwindowsguides.github.io/book/ch02-04.html
  • наконец-то я установлены рельсы, и на этот раз он работал нормально без ошибок

надеюсь, что это помогает


мой сын исправил эту проблему для меня. Проблема заключалась в том, что я установил сначала Ruby, а затем установщик Rails. Поэтому мне пришлось удалить Ruby и переустановить только с помощью установщика Rails.


удалите Gemfile.заблокировать и запустить команду установки пакета


цитата из вашего выхода журнала:

компилятору не удалось создать исполняемый файл. (RuntimeError) Сначала необходимо установить средства разработки.

на windows, вам нужно установите DevKit для того, чтобы иметь возможность компилировать камней.


у меня была аналогичная проблема, и запуск этой команды решил мою проблему.

bundle config build.nio4r --with-cflags="-std=c99"

теперь вы можете успешно работать bundle install далее.


была такая же проблема на Ubuntu 16.04. Что я сделал чтобы исправить это :

Удалить Gemfile.блокировка: sudo rm Gemfile.замок Установленный Ruby-Dev:

sudo apt-add-репозиторий ppa:brightbox / ruby-ng sudo apt-получить обновление sudo apt-получить установить ruby2.4-dev

и важный шаг : перезагрузка!


Если вы используете Windows и установили ruby с RubyInstaller с версией больше или равной 2.4, чем вы не должны устанавливать DevKit с веб-сайта RubyInstaller и использовать только "msys64", который установлен после Ruby с RubyInstaller (убедитесь, что вы набрали номер 3 для установки msys и mingw). Удалите каталог devkit и его путь из переменной среды PATH, поэтому, когда rubygems попытается установить nio4r и вызвать компиляторы C, он вызовет msys. Читать здесь https://rubyinstaller.org/2017/05/25/rubyinstaller-2.4.1-1-released.html для получения дополнительной информации о MSYS2 и DevKit в RubyInstaller