捆绑安装:错误:无法构建gem原生扩展。 nio4rgem

我目前正在使用以下项目:

  • rvm 1.26.11
  • ruby2.2.1p85

我尝试运行bundle install但是一直收到以下错误:

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

和以下:

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

当我尝试运行gem install nio4r -v '1.0.0'

 Building native extensions. This could take a while... ERROR: Error installing nio4r: ERROR: Failed to build gem native extension. 

当我尝试运行bundle update

 Please make sure you have the correct access rights and the repository exists. Retrying git clone 'git@github.com:kshmir/requirejs-rails.git' ....* Git error: command `git clone 'git@github.com:kshmir/requirejs-rails.git'.... has failed 

当我尝试运行bundle update nio4r

 Gem::Ext::BuildError: ERROR: Failed to build gem native extension.... An error occurred while installing eventmachine (1.0.3), and Bundler cannot continue. Make sure that `gem install eventmachine -v '1.0.3'` succeeds before bundling. 

我也尝试了这个命令,没有结果。

我也试过改变Ruby版本:

rvm use 2.2.1 2.2.0 2.0.0并运行上面的命令,但它不会改变任何东西

编辑:

运行bundle install log的输出:

 Fetching gem metadata from rubygems....... Fetching version metadata from rubygems... Fetching dependency metadata from rubygems.. Using rake 10.2.2 Using i18n 0.7.0 Using multi_json 1.11.0 Using activesupport 3.2.17 Using builder 3.0.4 Using activemodel 3.2.17 Using erubis 2.7.0 Using journey 1.0.4 Using rack 1.4.5 Using rack-cache 1.2 Using rack-test 0.6.2 Using hike 1.2.3 Using tilt 1.4.1 Using sprockets 2.2.2 Using actionpack 3.2.17 Using mime-types 1.25.1 Using polyglot 0.3.4 Using treetop 1.4.15 Using mail 2.5.4 Using actionmailer 3.2.17 Using arbre 1.0.1 Using sass 3.2.19 Using thor 0.19.1 Using bourbon 3.1.8 Using bcrypt 3.1.7 Using bcrypt-ruby 3.1.5 Using orm_adapter 0.5.0 Using rack-ssl 1.3.4 Using json 1.8.1 Using rdoc 3.12.2 Using railties 3.2.17 Using atomic 1.1.15 Using thread_safe 0.2.0 Using warden 1.2.3 Using devise 3.2.3 Using formtastic 2.2.1 Using has_scope 0.6.0.rc Using responders 1.0.0 Using inherited_resources 1.4.1 Using jquery-rails 2.3.0 Using kaminari 0.15.1 Using arel 3.0.3 Using tzinfo 0.3.39 Using activerecord 3.2.17 Using polyamorous 0.5.0 Using meta_search 1.1.3 Using activeresource 3.2.17 Using bundler 1.8.4 Using rails 3.2.17 Using activeadmin 0.6.2 Using rgeo 0.3.20 Using rgeo-activerecord 0.5.0 Using activerecord-postgis-adapter 0.6.5 Using addressable 2.3.5 Using airbrake 3.1.16 Using descendants_tracker 0.0.3 Using ice_nine 0.11.0 Using axiom-types 0.0.5 Using coderay 1.1.0 Using better_errors 1.1.0 Using debug_inspector 0.0.2 Using binding_of_caller 0.7.2 Using bootstrap-datepicker-rails 1.1.1.8 Using bootstrap-sass 3.1.1.0 Using browser 0.8.0 Using columnize 0.3.6 Using debugger-linecache 1.2.0 Using byebug 2.7.0 Using cancan 1.6.10 Using highline 1.6.21 Using net-ssh 2.8.0 Using net-scp 1.1.2 Using net-sftp 2.1.2 Using net-ssh-gateway 1.2.0 Using capistrano 2.15.5 Using mini_portile 0.5.2 Using nokogiri 1.6.1 Using ffi 1.9.3 Using childprocess 0.5.1 Using rubyzip 1.1.0 Using websocket 1.0.7 Using selenium-webdriver 2.40.0 Using xpath 1.0.0 Using capybara 2.0.2 Using carrierwave 0.10.0 Using carrierwave_backgrounder 0.3.0 Using hitimes 1.2.2 Using timers 4.0.1 Using celluloid 0.16.0 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /home/adrian/.rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20150424-28432-11y95op.rb extconf.rb checking for rb_thread_blocking_region()... no checking for sys/select.h... yes checking for poll.h... yes checking for sys/epoll.h... yes checking for sys/event.h... no checking for port.h... no checking for sys/resource.h... yes creating Makefile make "DESTDIR=" clean make "DESTDIR=" compiling selector.c In file included from nio4r.h:10:0, from selector.c:6: /home/adrian/.rvm/rubies/ruby-2.2.1/include/ruby-2.2.0/ruby/backward/rubyio.h:2:2: warning: #warning use "ruby/io.h" instead of "rubyio.h" [-Wcpp] #warning use "ruby/io.h" instead of "rubyio.h" ^ In file included from selector.c:7:0: /home/adrian/.rvm/rubies/ruby-2.2.1/include/ruby-2.2.0/ruby/backward/rubysig.h:14:2: warning: #warning rubysig.h is obsolete [-Wcpp] #warning rubysig.h is obsolete ^ selector.c: In function 'NIO_Selector_allocate': selector.c:94:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] ev_init(&selector->timer, NIO_Selector_timeout_callback); ^ selector.c:94:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] selector.c:94:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] selector.c:99:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] ev_io_init(&selector->wakeup, NIO_Selector_wakeup_callback, selector->wakeup_reader, EV_READ); ^ selector.c:99:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] selector.c:99:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] selector.c: In function 'NIO_Selector_synchronize': selector.c:159:11: warning: variable 'current_thread' set but not used [-Wunused-but-set-variable] VALUE current_thread, lock_holder, lock; ^ selector.c: In function 'NIO_Selector_deregister_synchronized': selector.c:241:11: warning: unused variable 'monitor_args' [-Wunused-variable] VALUE monitor_args[3]; ^ selector.c:240:21: warning: unused variable 'interests' [-Wunused-variable] VALUE self, io, interests, selectables, monitor; ^ selector.c: In function 'NIO_Selector_select': selector.c:268:20: warning: unused variable 'array' [-Wunused-variable] VALUE timeout, array; ^ selector.c: In function 'NIO_Selector_select_synchronized': selector.c:286:9: warning: unused variable 'i' [-Wunused-variable] int i, ready; ^ selector.c: In function 'NIO_Selector_run': selector.c:326:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] ev_tstamp started_at = ev_now(selector->ev_loop); ^ selector.c:341:9: error: 'TRAP_BEG' undeclared (first use in this function) TRAP_BEG; ^ selector.c:341:9: note: each undeclared identifier is reported only once for each function it appears in selector.c:343:9: error: 'TRAP_END' undeclared (first use in this function) TRAP_END; ^ selector.c:347:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] ev_timer_init(&selector->timer, NIO_Selector_timeout_callback, BUSYWAIT_INTERVAL, BUSYWAIT_INTERVAL); ^ selector.c:347:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] selector.c:347:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] selector.c:347:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] selector.c: In function 'NIO_Selector_close': selector.c:391:5: warning: passing argument 2 of 'NIO_Selector_synchronize' from incompatible pointer type [enabled by default] return NIO_Selector_synchronize(self, NIO_Selector_close_synchronized, self); ^ selector.c:157:14: note: expected 'VALUE (*)(VALUE *)' but argument is of type 'VALUE (*)(VALUE)' static VALUE NIO_Selector_synchronize(VALUE self, VALUE (*func)(VALUE *args), VALUE *args) ^ selector.c:391:5: warning: passing argument 3 of 'NIO_Selector_synchronize' makes pointer from integer without a cast [enabled by default] return NIO_Selector_synchronize(self, NIO_Selector_close_synchronized, self); ^ selector.c:157:14: note: expected 'VALUE *' but argument is of type 'VALUE' static VALUE NIO_Selector_synchronize(VALUE self, VALUE (*func)(VALUE *args), VALUE *args) ^ selector.c: In function 'NIO_Selector_closed': selector.c:407:5: warning: passing argument 2 of 'NIO_Selector_synchronize' from incompatible pointer type [enabled by default] return NIO_Selector_synchronize(self, NIO_Selector_closed_synchronized, self); ^ selector.c:157:14: note: expected 'VALUE (*)(VALUE *)' but argument is of type 'VALUE (*)(VALUE)' static VALUE NIO_Selector_synchronize(VALUE self, VALUE (*func)(VALUE *args), VALUE *args) ^ selector.c:407:5: warning: passing argument 3 of 'NIO_Selector_synchronize' makes pointer from integer without a cast [enabled by default] return NIO_Selector_synchronize(self, NIO_Selector_closed_synchronized, self); ^ selector.c:157:14: note: expected 'VALUE *' but argument is of type 'VALUE' static VALUE NIO_Selector_synchronize(VALUE self, VALUE (*func)(VALUE *args), VALUE *args) ^ selector.c: In function 'NIO_Selector_wakeup': selector.c:384:10: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result] write(selector->wakeup_writer, "\0", 1); ^ make: *** [selector.o] Error 1 make failed, exit code 2 Gem files will remain installed in /home/adrian/.rvm/gems/ruby-2.2.1/gems/nio4r-1.0.0 for inspection. Results logged to /home/adrian/.rvm/gems/ruby-2.2.1/extensions/x86_64-linux/2.2.0/nio4r-1.0.0/gem_make.out An error occurred while installing nio4r (1.0.0), and Bundler cannot continue. Make sure that `gem install nio4r -v '1.0.0'` succeeds before bundling. 

如果您正在使用高于10.11.x Mac OSX,则以下方法适用于我:

 gem install nio4r -v '1.1.0' -- with-cflags="-std=c99" 

我解决了它:

 sudo apt-get install libmysqlclient-dev sudo apt-get install libpq-dev sudo apt-get install libsqlite3-dev sudo apt-get install libev-dev rvm use 2.0.0 Reboot pc 

如果我运行rails -v告诉我:

  • Rails 3.2.17

现在我可以Bundle install

我认为rails版本存在冲突。 我不知道为什么,也许任何人都可以解释我。

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

适合我

如果您使用的是Ruby 2.2.1,请更新到1.0.4版

设置捆绑包配置对我不起作用……

如果您最近更新了Xcode,请确保实际运行该应用程序并接受服务条款。

在我的捆绑错误中,我得到了You have to install development tools first.

运行以下命令后,与macOS Sierra(10.12.2)一起正常工作:

 xcode-select --install 

在我之前:

 An error occurred while installing nio4r (1.2.1), and Bundler cannot continue.