nokogiri - 错误:无法构建gem原生扩展

时间:2011-07-19 19:32:17

标签: ruby-on-rails ruby ruby-on-rails-3 bundler

我更新了Lion的开发者版本,发现我无法启动rails应用程序。每当我尝试sudo bundle install时,我都会收到以下错误:

Installing nokogiri (1.4.4) with native extensions /Library/Ruby/Site/1.8/rubygems/installer.rb:551:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb 
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h


Gem files will remain installed in /Users/jamielawrence/Documents/Websites/atgdb/vendor/bundle/ruby/1.8/gems/nokogiri-1.4.4 for inspection.
Results logged to /Users/jamielawrence/Documents/Websites/atgdb/vendor/bundle/ruby/1.8/gems/nokogiri-1.4.4/ext/nokogiri/gem_make.out
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:504:in `each'
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:504:in `build_extensions'
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:180:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/source.rb:101:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/rubygems_integration.rb:78:in `preserve_paths'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/source.rb:91:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/installer.rb:58:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/rubygems_integration.rb:93:in `with_build_args'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/installer.rb:57:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/spec_set.rb:12:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/spec_set.rb:12:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/installer.rb:49:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/installer.rb:8:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/cli.rb:222:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/vendor/thor/task.rb:22:in `send'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/vendor/thor/task.rb:22:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/vendor/thor.rb:246:in `dispatch'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/lib/bundler/vendor/thor/base.rb:389:in `start'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.15/bin/bundle:13
    from /usr/bin/bundle:19:in `load'
    from /usr/bin/bundle:19

8 个答案:

答案 0 :(得分:15)

尝试安装“libxslt1-dev”和“libxml2-dev”软件包。

答案 1 :(得分:10)

全部感谢 - 当我更新到Lion时,我需要安装x代码4.1才能在后台获取正确的文件,以便捆绑程序安装所有正确的软件包。现在一切都很好吃了!

答案 2 :(得分:3)

安装ruby1.8-dev gem(或更确切地说,适用的* -dev gem),它将包含所有头文件。看到: This question

答案 3 :(得分:2)

我发现这可以通过https://github.com/sparklemotion/nokogiri/issues/1166#issuecomment-56545974完成。

$ brew install libxml2
$ gem install nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

如果这不起作用,这是一个更详细的方法。 http://www.bullrico.com/2012/07/12/installing-nokogiri-after-updating-homebrew

答案 4 :(得分:1)

它说:“无法找到ruby的头文件”。换句话说,你错过了ruby头文件,以便将libxml / nokogiri编译为ruby扩展。

考虑使用macports或rvm安装ruby 1.9(或1.8)。我不是100%在第二个,但第一个将自动使相关的标题可用。

答案 5 :(得分:1)

考虑安装1.6版之前的nokigiri(gem install nokogiri -v '1.5.9'

答案 6 :(得分:0)

我有类似的问题,在安装XCode 4.1后,我还必须执行以下命令:

sudo port upgrade libxml2 libxslt

之后Nokogiri没有问题。

更多信息:http://tektastic.com/2011/07/ruby-mac-ports-and-os-x-lion.html

答案 7 :(得分:0)

我尝试了许多不同的解决方案,但最终对我有用的只是使用不同版本的1.9.2。

我遇到了与 1.9.2-p280 相同的问题,但当我切换到 1.9.2-p180 时,我能够安装出现问题。不能告诉你为什么会这样,但确实如此。

我正在运行 Lion和RVM(1.8.6)