Ruby-on-rails 捆绑安装:错误:无法构建 gem 本机扩展。nio4r 宝石
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/29859413/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Bundle install: ERROR: Failed to build gem native extension. nio4r gem
提问by Adrián E.
I'm currently working on a project using:
我目前正在使用以下项目进行项目:
- rvm 1.26.11
- ruby 2.2.1p85
- 房车 1.26.11
- 红宝石 2.2.1p85
I tried to run bundle installbut keep getting the following error:
我试图运行bundle install但不断收到以下错误:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
and, following:
和以下:
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.
When I try running gem install nio4r -v '1.0.0':
当我尝试运行时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.
When I try running bundle update:
当我尝试运行时bundle update:
Please make sure you have the correct access rights
and the repository exists.
Retrying git clone '[email protected]:kshmir/requirejs-rails.git' ....*
Git error: command `git clone '[email protected]:kshmir/requirejs-rails.git'.... has failed
When I try running bundle update nio4r:
当我尝试运行时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.
I tried that command too, to no result.
我也试过这个命令,没有结果。
I also tried changing Ruby version:
我还尝试更改 Ruby 版本:
rvm use 2.2.12.2.02.0.0and running the commands above, but it doesn't change anything
rvm use 2.2.12.2.02.0.0并运行上面的命令,但它不会改变任何东西
Edit:
编辑:
The output from running bundle install log:
运行的输出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, "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
", 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.
采纳答案by Adrián E.
I solved it with:
我用以下方法解决了它:
gem install nio4r -v '1.1.0' -- with-cflags="-std=c99"
If I run rails -vshows me:
如果我运行rails -v显示我:
- Rails 3.2.17
- 导轨 3.2.17
And now I can make Bundle install
现在我可以做 Bundle install
I think the rails version was in conflict. I don't know why, maybe anyone can explain me.
我认为 rails 版本有冲突。我不知道为什么,也许有人可以解释我。
回答by Max Peng
If you are working on Mac OSX above version 10.11.x, the following approach worked for me:
如果您在 Mac OSX 以上版本上工作10.11.x,以下方法对我有用:
bundle config build.nio4r --with-cflags="-std=c99"
bundle install
回答by ralfanzo
xcode-select --install
works for me
对我来说有效
回答by DollarChills
Update to version 1.0.4 if you're using Ruby 2.2.1
如果您使用的是 Ruby 2.2.1,请更新到 1.0.4 版
回答by claptimes
Setting the bundle config didn't work for me...
设置捆绑配置对我不起作用...
If you've recently updated Xcode, make sure to actually run the application and accept the terms of service.
如果您最近更新了 Xcode,请确保实际运行该应用程序并接受服务条款。
In my bundle error, I was getting You have to install development tools first.
在我的捆绑错误中,我得到了 You have to install development tools first.
回答by wingfire
Works fine with macOS Sierra (10.12.2) after running the following command:
运行以下命令后,可以在 macOS Sierra (10.12.2) 上正常工作:
An error occurred while installing nio4r (1.2.1), and Bundler cannot continue.
Before i had:
在我之前:
##代码##回答by Brett Allred
This happened to me and it was because a new version of XCODE was installed and I hadn't accepted the new terms and conditions. Looking at the mkmf.log showed the following:
这发生在我身上,这是因为安装了新版本的 XCODE 而我没有接受新的条款和条件。查看 mkmf.log 显示以下内容:
Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.
Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.

