Gem :: Ext :: BuildError:错误:无法构建Gem本机扩展Bcrypt-Ruby [英] Gem::Ext::BuildError: ERROR: Failed to build gem native extension Bcrypt-Ruby

查看:135
本文介绍了Gem :: Ext :: BuildError:错误:无法构建Gem本机扩展Bcrypt-Ruby的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一款Rails应用程序,并且刚刚升级到优胜美地,并且我认为在更新期间一切都会中断。当我把所有的代码都写入github时,所有事情都在昨晚工作。我昨晚更新了我的电脑到优胜美地。今天我跑了 gem install bcrypt-ruby ,一切都破裂了。我有;


  1. 运行 xcodebuild -license

  2. 更新的bundler

  3. 运行 brew install rbenv ruby​​-build rbenv-gem-rehash 获取最新的ruby

  4. 运行 brew install coreutils

尽管工作。



环境: OSX Yosemite 10.10 rbenv 0.4.0 ruby 2.1.3p242(2014-09-19修订版47630)[x86_64-darwin14.0],bre​​w 0.9.5



错误的来源来自我的Rails应用程序:

gemfile

  gem'rails','4.1.5'
gem'pg'
gem'uglifier','> = 1.3.0'
gem'jquery-rails'
gem'turbolinks'
gem'jbuilder','〜> 2.0'
gem'sdoc','〜> 0.4.0',group::doc
gem'spring',group::development
gem'bcrypt-ruby'

group:test,:development do
gem'rspec-rails',〜> 2.14
end
group:test do
gem'capybara',2.1.0
gem'factory_girl_rails', 〜> 4.2.1'
end

运行 bundle install 。这里是完整的堆栈跟踪(所有 / users // 取出名称;)

  Gem :: Ext :: BuildError:错误:无法构建gem本机扩展。 

/Users//.rbenv/versions/2.0.0-p247/bin/ruby -r ./siteconf20141027-60319-1lss4fm.rb extconf.rb
创建Makefile

makeDESTDIR =clean

makeDESTDIR =
编译bcrypt_ext.c
无法理解kern.osversion`14.0.0'
从/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33包含的文件中,
来自bcrypt_ext.c:1:
/用户//。rbenv / versions / 2.0.0-p247 / include / ruby​​-2.0.0 / ruby​​ / ruby​​.h:51:21:error:string.h:没有这样的文件或目录
/ Users / /.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:61:21:error:stdint.h:没有这样的文件或目录
/ Users //。 rbenv / versions / 2.0.0-p247 / include / ruby​​-2.0.0 / ruby​​ / ruby​​.h:64:23:error:inttypes.h:没有这样的文件或目录
/Users//.rbenv/版本/ 2.0.0-p247 / include / ruby​​-2.0.0 / ruby​​ / ruby​​.h:68:19:error:stdio.h:没有这样的文件或目录
在/ Users包含的文件中。 rbenv / versions / 2.0.0-p247 / include / ruby​​-2.0.0 / ruby​​ / ruby​​.h:70,
from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
from bcrypt_ext.c:1:
/ Users //。 rbenv / versions / 2.0.0-p247 / include / ruby​​-2.0.0 / ruby​​ / defines.h:29:21:error:stdlib.h:没有这样的文件或目录
在/ Users / /.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:194,来自/Users//.rbenv/versions/2.0.0-p247/include/的
ruby-2.0.0 / ruby​​.h:33,
from bcrypt_ext.c:1:
/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/../lib /gcc/i686-apple-darwin11/4.2.1/include/limits.h:10:25:error:limits.h:没有这样的文件或目录
从/Users//.rbenv/versions包含的文件中/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1567,来自/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0的
/ruby.h:33,
from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/missing.h :23:45:错误:math.h:没有这样的文件或目录
在/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1568包含的文件中,从/Users//.rbenv/versions/2.0开始
.0-p247 / include / ruby​​-2.0.0 / ruby​​.h:33,bcrypt_ext.c中的
:1:
/Users//.rbenv/versions/2.0.0-p247/include /ruby-2.0.0/ruby/intern.h:36:23:error:sys / types.h:没有这样的文件或目录
/Users//.rbenv/versions/2.0.0-p247/include /ruby-2.0.0/ruby/intern.h:40:22:error:sys / time.h:没有这样的文件或目录
从/Users//.rbenv/versions/2.0.0包含的文件中-p247 / include / ruby​​-2.0.0 / ruby​​ / intern.h:43,$ / $ b / from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby .h:1568,来自/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33的
,来自bcrypt_ext.c的
:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/st.h:140:错误:期望的声明说明符或'...'在'uint32_t'之前
包含在/Users//.rbe中的文件nv / versions / 2.0.0-p247 / include / ruby​​-2.0.0 / ruby​​ / ruby​​.h:1568,$ / $ b / from /Users//.rbenv/versions/2.0.0-p247/include/ruby- 2.0.0 / ruby​​.h:33,bcrypt_ext.c中的
:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/在'rb_fdset_t'之前intern.h:326:error:expected'=',',',';','asm'或'__attribute__'
/Users//.rbenv/versions/2.0.0-p247 /include/ruby-2.0.0/ruby/intern.h:416:错误:预期声明说明符或'...'在'fd_set'之前
/Users//.rbenv/versions/2.0.0-p247 /include/ruby-2.0.0/ruby/intern.h:416:错误:预期声明说明符或'...'在'fd_set'之前
/Users//.rbenv/versions/2.0.0-p247 /include/ruby-2.0.0/ruby/intern.h:416:错误:预期声明说明符或'...'在'fd_set'之前
/Users//.rbenv/versions/2.0.0-p247 /include/ruby-2.0.0/ruby/intern.h:416:警告:在参数列表中声明的'struct timeval'
/Users//.rbenv/versions/2.0.0-p24 7 / include / ruby​​-2.0.0 / ruby​​ / intern.h:416:警告:它的范围只是这个定义或声明,这可能不是你想要的
/Users//.rbenv/versions/2.0 .0-p247 / include / ruby​​-2.0.0 / ruby​​ / intern.h:417:错误:期望的声明说明符或'...'在'rb_fdset_t'之前
/Users//.rbenv/versions/2.0 .0-p247 / include / ruby​​-2.0.0 / ruby​​ / intern.h:417:错误:期望的声明说明符或'...'在'rb_fdset_t'之前
/Users//.rbenv/versions/2.0 .0-p247 / include / ruby​​-2.0.0 / ruby​​ / intern.h:417:错误:期望的声明说明符或'...'在'rb_fdset_t'之前
/Users//.rbenv/versions/2.0 .0-p247 / include / ruby​​-2.0.0 / ruby​​ / intern.h:417:警告:在参数列表中声明的'struct timeval'
/Users//.rbenv/versions/2.0.0-p247/ include / ruby​​-2.0.0 / ruby​​ / intern.h:418:警告:在参数列表中声明'struct timeval'
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0 .0 / ruby​​ / intern.h:514:错误:期望的声明说明符或'.. 。'before'mode_t'
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:593:error:expected declaration specifiers or'..' 。''pid_t'
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:607:error:expected'=',', ',';','asm'或'__attribute__'在'rb_fork'之前
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h: 608:error:expected'=',',',';','asm'或'__attribute__''rb_fork_err'
/Users//.rbenv/versions/2.0.0-p247/include/ruby -2.0.0 / ruby​​ / intern.h:610:error:expected'=',',';','asm'或'__attribute__'在'rb_waitpid'之前
/Users//.rbenv/在'pid'之前的版本/ 2.0.0-p247 / include / ruby​​-2.0.0 / ruby​​ / intern.h:611:error:expected')'
/Users//.rbenv/versions/2.0.0 -p247 / include / ruby​​-2.0.0 / ruby​​ / intern.h:612:error:expected'=',',',';','asm'或'__attribute__'before'rb_spawn'
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:613:error:expected'=',',',';',在'rb_spawn_err'
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:615之前的'asm'或'__attribute__':error:expected' )''pid'
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:728:错误:期望的声明说明符或'..' 。''之前'uint32_t'
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:851:error:expected')'before'long '
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:852:error'expected')'before'long'
bcrypt_ext.c:在函数'bc_salt'中:
bcrypt_ext.c:21:警告:内置函数'strlen'的不兼容隐式声明
make:*** [bcrypt_ext.o]错误1

失败,退出代码2

Gem文件将保持安装在/ Users // ticket_tracker / vendor / bundle / gems / b crypt-3.1.9进行检查。
结果记录到/Users//ticket_tracker/vendor/bundle/extensions/x86_64-darwin-12/2.0.0-static/bcrypt-3.1.9/gem_make.out
安装bcrypt时发生错误(3.1.9),Bundler无法继续。
确保`gem install bcrypt -v'3.1.9'`在绑定之前成功。

如果有人有过更新OSX,Rbenv,Ruby等的经验,可以给我一些指示,将不胜感激。如果需要,我还可以发布更多的代码/环境。

解决方案

我遇到了同样的问题,我通过重新安装XCode命令行开发者工具解决了这个问题:
$ b

  xcode-select --install 
bundle install


I am making a rails app and just upgraded to Yosemite, and I think everything broke during that update. Everything was working last night when I checked in all my code to github. I updated my computer last night to Yosemite. Today I ran gem install bcrypt-ruby and everything broke. I have;

  1. ran xcodebuild -license
  2. updated bundler
  3. ran brew install rbenv ruby-build rbenv-gem-rehash to get the latest ruby
  4. ran brew install coreutils

That did not work though.

environment: OSX Yosemite 10.10, rbenv 0.4.0, ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin14.0], brew 0.9.5`

The source of the error is from my rails app:

gemfile

gem 'rails', '4.1.5'
gem 'pg' 
gem 'uglifier', '>= 1.3.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'spring',        group: :development
gem 'bcrypt-ruby'

group :test, :development do
  gem 'rspec-rails', "~> 2.14"
end
group :test do
  gem 'capybara', "2.1.0"
  gem 'factory_girl_rails', '~> 4.2.1'
end

I got the error when I ran bundle install. Here is the full stack trace (all the /users// is from taking out the name ;)

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

    /Users//.rbenv/versions/2.0.0-p247/bin/ruby -r ./siteconf20141027-60319-1lss4fm.rb extconf.rb 
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling bcrypt_ext.c
couldn't understand kern.osversion `14.0.0'
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:51:21: error: string.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:61:21: error: stdint.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:64:23: error: inttypes.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:68:19: error: stdio.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:70,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/defines.h:29:21: error: stdlib.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:194,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/../lib/gcc/i686-apple-darwin11/4.2.1/include/limits.h:10:25: error: limits.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1567,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/missing.h:23:45: error: math.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1568,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:36:23: error: sys/types.h: No such file or directory
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:40:22: error: sys/time.h: No such file or directory
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:43,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1568,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/st.h:140: error: expected declaration specifiers or ‘...’ before ‘uint32_t’
In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1568,
                 from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                 from bcrypt_ext.c:1:
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:326: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: warning: ‘struct timeval’ declared inside parameter list
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: warning: its scope is only this definition or declaration, which is probably not what you want
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: warning: ‘struct timeval’ declared inside parameter list
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:418: warning: ‘struct timeval’ declared inside parameter list
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:514: error: expected declaration specifiers or ‘...’ before ‘mode_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:593: error: expected declaration specifiers or ‘...’ before ‘pid_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:607: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fork’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:608: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fork_err’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:610: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_waitpid’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:611: error: expected ‘)’ before ‘pid’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:612: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_spawn’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:613: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_spawn_err’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:615: error: expected ‘)’ before ‘pid’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:728: error: expected declaration specifiers or ‘...’ before ‘uint32_t’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:851: error: expected ‘)’ before ‘long’
/Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:852: error: expected ‘)’ before ‘long’
bcrypt_ext.c: In function ‘bc_salt’:
bcrypt_ext.c:21: warning: incompatible implicit declaration of built-in function ‘strlen’
make: *** [bcrypt_ext.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users//ticket_tracker/vendor/bundle/gems/bcrypt-3.1.9 for inspection.
Results logged to /Users//ticket_tracker/vendor/bundle/extensions/x86_64-darwin-12/2.0.0-static/bcrypt-3.1.9/gem_make.out
An error occurred while installing bcrypt (3.1.9), and Bundler cannot continue.
Make sure that `gem install bcrypt -v '3.1.9'` succeeds before bundling.

If anyone has had some experience updated OSX, Rbenv, Ruby etc and can give me some pointers, that would be much appreciated. I can also post more code/environment set up if needed.

解决方案

I had the same problem which I solved by re-installing the XCode command line developer tools :

xcode-select --install
bundle install

这篇关于Gem :: Ext :: BuildError:错误:无法构建Gem本机扩展Bcrypt-Ruby的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆