Gem :: Ext :: BuildError:错误:无法构建Gem本机扩展Bcrypt-Ruby [英] Gem::Ext::BuildError: ERROR: Failed to build gem native extension Bcrypt-Ruby
问题描述
我正在开发一款Rails应用程序,并且刚刚升级到优胜美地,并且我认为在更新期间一切都会中断。当我把所有的代码都写入github时,所有事情都在昨晚工作。我昨晚更新了我的电脑到优胜美地。今天我跑了 gem install bcrypt-ruby
,一切都破裂了。我有;
- 运行
xcodebuild -license
- 更新的bundler
- 运行
brew install rbenv ruby-build rbenv-gem-rehash
获取最新的ruby - 运行
brew install coreutils
尽管工作。
环境: OSX Yosemite 10.10 , rbenv 0.4.0 , ruby 2.1.3p242(2014-09-19修订版47630)[x86_64-darwin14.0],brew 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;
- ran
xcodebuild -license
- updated bundler
- ran
brew install rbenv ruby-build rbenv-gem-rehash
to get the latest ruby - 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屋!