我在一台具有完整开发环境的机器上运行了bundle--deployment,然后将vendor/bundle复制到另一台没有完全开发环境的计算机上。在第二台机器上,一个简单的"bundleexec-irb"给出:
//usr/lib64/ruby/2.1.0/rubygems/ext/builder.rb:89:在"run"中:错误:无法构建gem本机扩展。(Gem::Ext::BuildError)
/usr/bin/ruby.ruby2.1 extconf.rb
mkmf.rb在/usr/lib64/ruby/include/ruby.h 中找不到ruby的头文件
extconf失败,退出代码1
bundle部署不是要复制整个gem,包括任何本地二进制文件吗?为什么要重建?
在dev机器上,安装了libffi43、libffi-devel和libffi43-devel,在非dev机器中,SUSE SLES SP3上仅安装了libffini43(libffini43-4.3.4_4/20091019-0.37.28)。
我用相同的内核构建了一个开发系统,这解决了问题。我不会想到内核中的微小差异会导致失败。我可能忽略了其他一些修复它的小细节,但我对此表示怀疑。