问题: bundler无法构建ffi,因此我的rails应用程序在我的开发环境中被破坏了。 我读过的所有帖子都没有适合我的解决方案。我在许多rails应用程序中遇到了同样的错误。
我可以采取哪些其他问题排查步骤? 我该如何解决这个问题?
背景 从Snow Leopard升级到Mountain Lion后,Xcode升级,Clean Homebrew安装,我做了一个干净安装的rvm。现在我正在尝试重新创建我的rails应用程序使用的gemsets。我做了:
gem install rails -v3.2.16 (to get the base rails gems installed)
rvm gemset import ruby-1.9.3-p545@CLIENTNAME.gems (to import gems)
bundle install (to install dependencies and resync gemfile.lock)
ISSUE: 捆绑安装失败,并显示以下错误消息:
An error occurred while installing ffi (1.9.3), and Bundler cannot continue.
Make sure that gem install ffi -v '1.9.3' succeeds before bundling.
完整的gem_make.out在这里:https://gist.github.com/mattmartini/b2f8ad3b4e6c57325d38
mkmf.log在这里:https://gist.github.com/mattmartini/d3256cb52e5eafb2346b
config.log在这里:https://gist.github.com/mattmartini/69407e118e92cadda2b0
我想继续使用ruby 1.9.3,因为生产服务器正在使用它。
意见: 抛出的错误之一是' C编译器无法创建可执行文件' - 这不是真的。我可以编译C程序和捆绑器构建的nokogiri没有问题。
我刚刚注意到rvm安装的libffi(以及gcc46)只是keg。 Bundler能否在创建gem时使用lib?
环境:
Mac OS X 10.8.5 (Mountain Lion)
Xcode 5.0.2 (command line tools installed)
Homebrew 0.9.5 (recent fresh install)
rvm 1.25.25 (stable)
ruby 1.9.3-p545
libffi 3.0.13 (brew via rvm)
gcc46 (brew via rvm)
浏览: 我回顾了一些类似问题的帖子,但没有一个有适合我的解决方案,包括:
https://github.com/ffi/ffi/issues/286
注意我这里有一堆堆栈溢出链接,但我无法向他们提交此问题。
答案 0 :(得分:1)
我对libffi只是桶的预感是正确的。在链接libffi之后,bundle使用了这个lib而不是尝试编译它。这解决了安装gem的问题,但无法解决无法编译的原因。
由于lib只是keg,你必须强制它链接:
brew link libffi --force